我试图从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的源地图使用者来查找原始错误发生的位置,如以下所示(使用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 (高行数a和低列数)。
经过一些测试和使用line: 7140, column: 1692后,我发现给出结果的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 ...发布于 2015-09-01 06:07:51
我只是猜测(因为我没有看到堆栈跟踪),但是顶部的框架可能是一个助手函数。例如,dart2js可能会创建一个助手函数"iae",而不是在主体内抛出一个非法的参数异常,然后调用该函数。
这会导致代码变小,但是顶部框架是源文件中不存在的函数。iae函数也将由所有调用者共享,无助于调试。你走下框的方法应该是正确的位置。
https://stackoverflow.com/questions/32297761
复制相似问题