我想从dart2js生成的javascript中获取有用的错误。Dart2js错误行号不被源地图接受
通过将这些代码在我的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的源地图的消费者,找出发生在原来的错误,像这样的(使用的github/Mozilla浏览器/源图/):
// 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
(高行数a和低列数)。
一些测试,并使用smc.eachMapping()
后,我发现linenumbers,让一个结果是像line: 7140, column: 1692
(高行号和列高数)。
我的问题:
没有任何人有一个想法,为什么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 ...
您是否试图手动定位错误消息指向的源代码?也许是源地图消费者中的一些错误。 –
你似乎是对的。我的思考或源地图消费者中的一些错误。 Chromium开发工具正确应用生成的源地图,因此dart2js源地图生成不会出错。 –
似乎像堆栈跟踪**中的某些行/列引用不会导致源映射使用者命中,而同一跟踪**中的其他行/列引用也会导致工作。我现在只是(手动)遍历所有返回的数字,直到消费者返回有用的数据。 –