[英]Webpack source-map targets to *.min.js bundle and not to the source files in production mode
[英]Dart2js error line numbers not accepted by source-map
我试图从 dart2js 生成的 javascript 中获取有用的错误。
通过将此代码放在我的 index.html 中:
window.addEventListener(
'error',
function(e){
ga(
'send',
'event',
'JS Error',
'msg:'+e.message,
'line:'+e.lineno+' col:'+ e.colno+' file:'+e.filename,
{'nonInteraction':1}
);
},false);
我得到谷歌分析,为我的网站用户提供错误的行号和列号。
然后我使用 Mozilla 的 source-map consumer 找出原始错误发生的位置,如下所示(使用 github/mozilla/source-map/):
// some code removed for readability
require(["source-map/source-map-consumer"], function(SMC) {
var input = {
line: parseInt(line),
column: parseInt(col)
};
// rawSourceMap contains the dart2js generated source-map
var smc = new SMC.SourceMapConsumer(rawSourceMap);
console.log(smc.originalPositionFor(input));
问题是我得到的只是:
{
"source": null,
"line": null,
"column": null,
"name": null
}
虽然我期待类似的东西
{
"source": "image.dart",
"line": 324,
"column": 2,
"name": "clickController"
}
到目前为止,我发现错误的行号类似于此line: 6862, column: 31
( line: 6862, column: 31
号 a 和低列号)。
经过一些测试和使用smc.eachMapping()
,我发现给出结果的line: 7140, column: 1692
类似于line: 7140, column: 1692
( smc.eachMapping()
号和高列号)。
我的问题:
有人知道为什么 dart2js javascript 文件会生成 dart2js 源映射文件无法理解的错误吗? (以及如何解决这个问题)
亲切的问候和感谢任何帮助,
亨德里克·扬
一些额外的信息:
pubspec.yaml 如下所示:
name: bones
description: A sample web application
dependencies:
browser: any
observe: any
transformers:
- $dart2js: {"minify":true, "checked":false}
我已经尝试过"minify":false
和"checked":true
无济于事。
错误如下所示:
Uncaught Uncaught Error: Invalid argument(s) Stack Trace: Invalid argument(s) at dart.b (.../script.dart.js?0:1245:3) at F.dart.F.T (.../script.dart.js?0:479:48) at J.aF ... and so on ...
我只是猜测(因为我没有看到堆栈跟踪),但顶部框架可能是一个辅助函数。 例如,除了在主体 dart2js 中抛出非法参数异常之外,还可以创建一个辅助函数“iae”,并改为调用该函数。
这会导致代码更小,但顶层框架是源文件中不存在的函数。 iae
函数也将由所有调用者共享,并且无助于调试。 您沿着框架走的方法应该会产生正确的位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.