我想從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源地圖生成不會出錯。 –
似乎像堆棧跟蹤**中的某些行/列引用不會導致源映射使用者命中,而同一跟蹤**中的其他行/列引用也會導致工作。我現在只是(手動)遍歷所有返回的數字,直到消費者返回有用的數據。 –