vue项目开启sourcemap,其配置如下:
`module.exports = {
publicPath: '/',
outputDir: 'dist',
runtimeCompiler: false,
productionSourceMap: true,
configureWebpack: config => {
config.devtool = 'source-map'
}
}
`
运行npm run build后生成的.map文件放到node后端中;
前端使用tracekit这个作为捕捉错误,并将错误信息上报给node后端;
node使用mozilla/source-map这个库解析sourcemap文件;
`
const express = require('express');
const fs = require('fs');
const sourceMap = require('source-map');
const path = require('path');
const resolve = file => path.resolve(__dirname, file);
errorMap.errorMsg = async (req, res) => {
try {
const error = req.body.error
const fileName = req.body.error.fileName.split('.')[0]
let smc = new sourceMap.SourceMapConsumer(fs.readFileSync(resolve('../maps/archive.f7c91f8c.js.map'), 'utf8')); // 返回一个promise对象
smc.then(result => {
let ret = result.originalPositionFor({
line: error.line, // 压缩后的行号
column: error.column // 压缩后的列号
});
console.log('ret', ret)
})
return res.json({code: 0, message: ''})
} catch (e) {
logger.error('errorMsg error', e)
}
}
`
打印出来的ret结果为{source: null, line: null, column: null}
有人能帮我解答下为什么是null及提供下解决方案吗?
你好, 你解决没有, 我解决了