productionSourceMap: true的时候,sourcemap生成格式错误,mappings缺少分号
**mpvue 版本号:2.0.0
最小化复现代码:
[建议提供最小化可运行的代码:附件或文本代码]
直接用快速上手的demo就可以复现http://mpvue.com/mpvue/quickstart.html
// 还原脚本
const fs = require('fs')
const SourceMap = require('source-map')
async function originalPositionFor(line, column) {
const sourceMapFilePath = "/Users/smithdeng/Desktop/testd/mpvue_demo_to_reappear_sourcemap_bug/reappear_sourcemap_bug/dist/wx/app.js.map"
const sourceMapConsumer = await new SourceMap.SourceMapConsumer
(JSON.parse(fs.readFileSync(sourceMapFilePath, 'utf8')))
const res = sourceMapConsumer.originalPositionFor({
line,
column,
})
console.log(res)
}
originalPositionFor(3,506)
问题复现步骤:
- 下载快速上手的demo,http://mpvue.com/mpvue/quickstart.html
- 把config/index.js的productionSourceMap改成true
- npm run build:wx
观察到的表现:
dist目录下生成的map文件的mappings缺少分号,无法使用map来还原
我手动把分号补齐之后,就可以还原成功了
请看下图:
截图或动态图:
3条答案
按热度按时间apeeds0o1#
webpack-mpvue-asset-plugin
作为mpvue
的资源路径解析插件,处理依赖模块的引用,增加了require(xxx)
的代码,为什么会对UglifyJsPlugin
的SourceMap
造成影响呢?======================================================================================
2021-02-07 更新
问题出在插件是在
emit
阶段执行的,即准备生成文件时注入了require(xxx)
的代码,生成sourceMap
的环节之前已经完成了gzjq41n42#
所以得让生成sourcemap这个步骤后置对吧
tcomlyy63#
解决思路:针对入口区块(
entryChunk
) 的entryChunk.files
中的.map
文件做处理,chunk
数对应插入的require
代码行数,即添加相应数量的分号。修改后的
webpack-mpvue-asset-plugin
如下: