2016-11-18 54 views
1

我正在使用windows.onerror登录我们的JavaScript错误生产。我正在使用webpack捆绑我们的javascript并使用uglify插件来缩小。不幸的是,ErrorEvent对象的linenocolumno来自webpack生成的缩小块。 Webpack正在生成其默认源映射文件。无论如何得到正确的linenocolumnoWebpack&sourcemaps?

w.addEventListener("error", handleError, true); 

function handleError(e) { 

    let errorToLog = {}; 

    if (e.message) { 
     errorToLog.ErrorMessage = e.message; 
    } 

    if (e.filename) { 
     errorToLog.source = e.filename; 
    } 

    if (e.lineno) { 
     errorToLog.lineNumber = e.lineno; 
    } 

    if (e.colno) { 
     errorToLog.columnNumber = e.colno; 
    } 

    if (e.error.stack) { 
     errorToLog.stackTrace = e.error.stack; 
    } 

回答

4

使用的WebPack的`devtool'设置添加源地图:

{ 
    devtool: "#inline-source-map" 
} 

注意,使用一个完整的源地图将开销添加到您的transpile的时间,因此,如果您可以在不列号住开发,使用更快cheap-module-inline-source-map代替:

{ 
    devtool: "#cheap-module-inline-source-map" 
} 
+0

这是两者之间的唯一区别吗? –

+1

@adam-beck [yep](https://webpack.github.io/docs/configuration.html)。没有'module'部分的'cheap-source-map'是webpack开始丢弃真正有用的数据的时候。 – ssube

0

有很多可能的问题。

最常见的是,uglify现在需要一个明确的sourcemap: true或它会打破你的源地图生成。现在默认是false,因为呃原因。