Webpack源映射指向压缩的捆绑包

6

我正在为一个现有项目设置Webpack构建过程,但在源代码映射方面遇到了一些问题。

我正在使用devtool: 'eval-source-map'。如果浏览器中发生错误,则栈跟踪中的每个文件/行号都指向在Webpack捆绑包中压缩为单行的文件。

例如,堆栈跟踪的第一行可能如下所示:

Uncaught Error: foo

at child.initialize (eval at (http://127.0.0.1:8000/js/dist/index.js:1270:1), :45:10)

单击文件名/行号会将我带到捆绑包中由Webpack“包含”错误发生的文件所在的行。看起来像这样:

/* 223 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// Below is the line it points to, and it goes on to have the entire file on the same line
eval("/* WEBPACK VAR INJECTION */(function(Backbone, $, _) { ... 

然而,整个文件内容都在单行上,因此这是完全无用的。
即使我将Webpack配置仅裁剪到以下内容,仍会发生这种情况:
var path = require('path'),
    webpack = require('webpack');

module.exports = {
    entry: {
        'indexhead': './static/js/main.js',
        'accounthead': './static/js/accountManager.js'
    },
    output: {
        path: path.join(__dirname, 'static/js/dist'),
        filename: '[name].js'
    },
    devtool: 'eval-source-map',
};

如果涉及其他类型的开发源映射类型,请参见此处概述。如果我使用devtool:source-map的生产设置,仍然会指向一个包含每个脚本的巨大捆绑文件,但至少行是“展开的”,我可以看到错误发生的位置。

我该如何修复这个问题,或者至少进一步排除故障?


你想让它在控制台中点击文件名:行号时,将您直接定位到原始的js文件而不是输出捆绑文件吗? - Trash Can
1
至少我希望它能显示给我行号。目前在开发中,它会将我带到一个包含整个原始JS文件的单行,因此无法跟踪行号。 - Alex Turpin
2个回答

2

我尝试复现了这个问题,并找到了以下信息。也许这不是您想要的内容。

使用webpack打包代码后,代码在Chrome控制台中抛出错误。

enter image description here

当我点击main.js:2166链接时,浏览器会将我导航到捆绑代码。

enter image description here

当我刷新Chrome浏览器时,我会看到一个指向原始文件'layout.js'的链接。

enter image description here

点击此链接将带我进入未捆绑的代码。

enter image description here

如果我使用devtool:'eval-source-map'构建网页,则与Webpack-dev-server相同的结果。您可以检查构建的js文件是否具有嵌入式源映射。

enter image description here


很遗憾,无论我刷新页面多少次(我没有使用webpack-dev-server),我总是得到相同的错误输出。 - Alex Turpin
嗨Alex,我又用Webpack编译进行了测试,结果和你一样。需要刷新Chrome浏览器才能看到正确的链接,而在FireFox上无法工作。请检查编译后的JavaScript文件中是否有嵌入式源映射。如果需要更多帮助,请告诉我。 - Yoruba

0

我能够复制您的问题的唯一方法是在Chrome设置中禁用源映射:

enter image description here

我得到了这样的东西: {{link1:enter image description here}}
当我启用源映射时,我得到了下面的图片。通过点击右上角的文件名,我被带到了正确的位置。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接