如何从require.js错误中获取行号?

时间:2016-04-20 15:48:38

标签: javascript requirejs google-chrome-devtools

这困扰了我一段时间,但我找不到解决办法。当我的一个脚本出现错误(例如语法错误)时,Chrome的控制台不会给我一个非常有用的错误消息。

例如,在一个名为example.js的简单脚本中,我调用了一个名为whatever()的函数,该函数不存在:

define(function(require){
  'use strict';

  whatever();
});

我在Chrome中的控制台错误说明:

ReferenceError: whatever is not defined(…)                 require.js:901

我期望ReferenceError但require.js的第901行只是一些负责抛出错误的代码。此外,堆栈跟踪没有显示任何有用的内容;它也只引用require.js中的行。我注意到Firefox的检查员确实在堆栈跟踪中显示了问题的实际位置,这很有帮助,但我更喜欢在Chrome中进行开发。

有没有办法让控制台错误指向问题实际存在的行号和文件?我宁愿看到:

ReferenceError: whatever is not defined(…)                 example.js:4

我已经看到this question和其他类似的听起来很相似,但我没有发现任何适用于这种情况,或者使用requirejs解决此问题的代码。也许我可以某种方式修改requirejs.onError

1 个答案:

答案 0 :(得分:1)

您是否尝试追加

//# sourceURL=example.js

在评估脚本的末尾?调试器会将该代码理解为源自example.js文件,而不是来自它所评估的脚本。

您确定Require.JS不支持开箱即用吗?我在GitHub上发布了我自己的“Javascript DNA”异步加载器/依赖解析器,它自动完成它并且非常容易,所以我猜require.js已经有类似的东西......