EASYAIuniappNewUI/node_modules/@dcloudio/uni-stacktracey/README.md
2025-02-08 18:50:38 +08:00

116 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### uni-stacktracey 使用说明
#### 引用方式
```js
const {
sourcemap: { stacktracey, uniStracktraceyPreset, utsStracktraceyPreset },
} = require('${HBuilderX}/plugins/uniapp-cli-vite')
```
#### stacktracey 方法
**stacktracey 方法有两个参数:**
1. stacktrace
2. opts
##### stacktrace 参数说明
> 一个错误堆栈。String 类型
**示例**
```js
// js 错误堆栈
const uniErrorMsg = `Error: Sentry Error
at a.throwError(/static/js/pages-index-index.3ab0d0e5.js:1:567)
at click(/static/js/pages-index-index.3ab0d0e5.js:1:2745)
at ee(/static/js/chunk-vendors.75525bd5.js:34:11927)
at n(/static/js/chunk-vendors.75525bd5.js:34:13747)
at ee(/static/js/chunk-vendors.75525bd5.js:34:11927)
at HTMLElement.n(/static/js/chunk-vendors.75525bd5.js:34:13824)
at HTMLElement.o._wrapper(/static/js/chunk-vendors.75525bd5.js:34:53966)
at HTMLElement.i(/static/js/chunk-vendors.75525bd5.js:7:609894)`
// uts 错误堆栈
const utsErrorMsg = `e: DCloud-UTSPlugin/android/src/io/dcloud/uniplugin/TestModule.kt: (9, 5): Unresolved reference: logxxxxxxx
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':nativeplugins:DCloud-UTSPlugin:compileReleaseKotlin'.
> Compilation error. See log for more details
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
`
```
#### opts 参数说明
> 解析生成错误栈时需要用到的一些方法。
> 此处提供了生成该参数的两种预设方案uniStracktraceyPreset、utsStracktraceyPreset
**预设一:`uniStracktraceyPreset`**
> 解析 js 错误栈的预设方案
```js
// 调用方式
stacktracey(uniErrorMsg, {
preset: uniStracktraceyPreset({
base: path.resolve(__dirname, './__UNI__APPID__/1.0.0/.sourcemap/h5/'),
sourceRoot: '',
}),
}).then((stacktrace) => {
// stacktrace 即为解析 sourcemap 后的错误信息
console.log('stacktrace :>> ', stacktrace)
})
```
**预设二:`utsStracktraceyPreset`**
> 解析 uts 错误栈的预设方案
```js
// 调用方式
stacktracey(utsErrorMsg, {
preset: utsStracktraceyPreset({
base: path.resolve(
__dirname,
'./nativeplugins-sourceMap/DCloud-UTSPlugin/'
),
sourceRoot: 'DCloud-UTSPlugin/android/src/',
}),
}).then((stacktrace) => {
// stacktrace 即为解析 sourcemap 后的错误信息
console.log('stacktrace :>> ', stacktrace)
})
```
**预设方案的参数说明**
> 需要使用 base 和 sourceRoot 从错误信息中生成 sourcemap 路径。sourceRoot 即为需要将 错误信息路径替换为 base 的部分。
1. `base`:当前项目 `sourcemap` 文件绝对路径。如果由 `http:、https:` 开头,则会发送网络请求获取
2. `sourceRoot`:当前项目资源路径
3. 详细说明
> 由上述 stacktrace 参数说明中 `utsErrorMsg` 为例
>
> 错误信息为 e: DCloud-UTSPlugin/android/src/io/dcloud/uniplugin/TestModule.kt: (9, 5): Unresolved reference: logxxxxxxx
- 第一步:根据 `sourceRoot` 解析出包含 path 的 fileName
- 比如,`sourceRoot` 参数为:`DCloud-UTSPlugin/android/src/`
- 解析出的 `fileName` 为:`io/dcloud/uniplugin/TestModule.kt`
- 第二步:根据 `base + fileName` 参数拼接出 `sourcemap` 路径
- 比如,`base` 参数为:`C:/project/test-uni/.sourcemap/`
- 解析出的 `sourcemap` 路径为 `C:/project/test-uni/.sourcemap/io/dcloud/uniplugin/TestModule.kt.map`