Skip to content

sourcemap 失效问题

背景

在微前端中,采用 eval 函数来执行子 App 的 js 代码。

eval(code) 执行代码的时候,在浏览器中没有相应的 js 文件以及 sourcemap 文件,对于调试来讲十分困难。

解决方案

在执行 eval(code) 的时候,添加 sourceMappingURL,类似如下:

js
//# sourceMappingURL=<http://example.com/path/to/your/sourcemap.map>

添加完成后,浏览器在加载的时候会出现 appjs 代码。

但是还存在另外一个问题,appjs 代码外层包裹了一些代理 window 等代码。导致 sourcemap 的映射关系出现偏差。当把外层包裹的代码拍平成一行时,可以让 sourcemap 位置正确。

但是后来又发现:偶尔会出现断点变量对不上的问题,以及偶尔会出现控制台崩溃的问题。大概率是 sourcemap 对不上导致的,qiankun 同样存在这样的问题:https://github.com/umijs/qiankun/issues/1088。看评论可以通过 webpack.BannerPlugin 在开发环境下给 js 文件添加一行注释,这样 jssourcemap 从第二行开始就没有问题了。