[LayaAir 2.0]uglify压缩后的错误堆栈解析

1、js的压缩工具:.laya/publish.js 中
// 压缩js
gulp.task("compressJs", ["compressJson"], function () {
if (config.compressJs) {
return gulp.src(config.compressJsFilter, { base: releaseDir })
.pipe(sourcemaps.init({loadMaps:true}))
.pipe(uglify({
mangle: {
keep_fnames:true
}
}))
.pipe(sourcemaps.write(releaseDir + '/../sourcemaps'))
.on('error', function (err) {
console.warn(err.toString());
})
.pipe(gulp.dest(releaseDir));
}
});
可以看到laya是用uglify工具压缩的js
 
2、生成js对应的 .js.map文件
.js.map :map文件是js文件压缩后,文件的变量名替换对应、变量所在位置等元信息数据文件
 
在 publish.js 中添加 const sourcemaps = require(ideModuleDir + 'gulp-sourcemaps');
 
compressJs任务中添加.pipe(sourcemaps.init({loadMaps:true})) 和 .pipe(sourcemaps.write(releaseDir + '/../sourcemaps')) 会生成对应js文件的.js.map
 
3、npm install source-map
 
4、npm install stacktracey
 
5、解析脚本:
var errorStack = process.argv[2];
var mapFilePath = process.argv[3];
var sourceMap = require('source-map');
var fs = require('fs');
var Stacktracey = require('stacktracey');
async function main() 
{
// const errorStack = "at t.ClearYeMan (http://cangqiong.17dawan.com/v ... 341015)"; // 错误信息
const tracey = new Stacktracey(errorStack); // 解析错误信息
const { readFileSync } = fs;
for(const frame of tracey.items)

// frame.fileName
const sourceMapContent = JSON.parse(readFileSync(mapFilePath, 'utf8'));
const consumer = await new sourceMap.SourceMapConsumer(sourceMapContent);
// console.log(frame);
// originalPosition不仅仅是行列信息,还有错误发生的文件 originalPosition.source
const originalPosition = consumer.originalPositionFor({line:frame.line, column:frame.column});
console.log(originalPosition);
// 错误所对应的源码
// const sourceContent = consumer.sourceContentFor(originalPosition.source);
// console.log(sourceContent);
// const generatedPosition = consumer.generatedPositionFor({source:"bundle.js", line:frame.line, column:frame.column})// { line: 1,// column: 56 }
// console.log(generatedPosition);
}
// consumer.destroy();
}
main().catch(error => console.log(error.message));
 
6、在cmd中运行:node convertSourceMap.js "at t.ClearYeMan (http://cangqiong.17dawan.com/v ... 341015)" "F:\\jenkins_workspace\\branch\\0707\\release\\sourcemaps\\js\\bundle.js.map"
已邀请:

1588661103用户

赞同来自:

沙发坐起

要回复问题请先

商务合作
商务合作