1.0.2 • Published 6 years ago
sourcemap-stack v1.0.2
sourcemap-stack
参数定义
参数属性 | 说明 |
---|---|
mapUrl | sourcemap 地址链接,如果不填,表示sourcemap地址跟实际js路径一样 |
mapName | 参考webpack的地址格式,比如:name.hash.js.map |
mapEncrypt | 如果map文件放到跟js同目录下,一起发布到cdn上,处于安全考虑,可以使用对称性加密map文件,加密包使用encrypte,如果没有加密,这项不填 |
desc | js error 的堆栈信息 |
API
getStackByError
根据错误的stack error信息,提取出调动的堆栈关系
Input:
TypeError: console.logs is not a function
at n (http://localhost:8082/app.js:6:180422)
at a.clickme (http://localhost:8082/app.js:6:180791)
at Proxy.r (http://localhost:8082/app.js:6:1053)
at click (http://localhost:8082/app.js:6:172962)
at HTMLHeadingElement.t (http://localhost:8082/app.js:6:7539)
Output:
[
{"filepath":"http://localhost:8082/app.js","row":"6","column":"180422","html":false},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"180791","html":false},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"1053","html":false},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"172962","html":false},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"7539","html":false}
]
getMapPath
根据map参数的配置,获取sourcemap地址
Output:
[
{"filepath":"http://localhost:8082/app.js","row":"6","column":"180422","html":false,"mapUrl":"http://localhost:8082/app.js.map"},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"180791","html":false,"mapUrl":"http://localhost:8082/app.js.map"},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"1053","html":false,"mapUrl":"http://localhost:8082/app.js.map"},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"172962","html":false,"mapUrl":"http://localhost:8082/app.js.map"},
{"filepath":"http://localhost:8082/app.js","row":"6","column":"7539","html":false,"mapUrl":"http://localhost:8082/app.js.map"}
]
getRealStack
解析真正的调用关系
调用demo
// 获取请求内容
let params = this.ctx.request.body
// 获取调用堆栈
let stacks = sourcemapStack.getStackByError(params.desc)
// 增加map地址
sourcemapStack.getMapPath(stacks, params)
// 获取真实调用地址
stacks = yield sourcemapStack.getRealStack(stacks)