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

How can I get line numbers from require.js errors?

这个问题困扰了我一段时间,但一直没能找到解决办法。当我的某个脚本出现错误时,例如语法错误,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

您是否尝试附加

//# sourceURL=example.js

在评估脚本的末尾?调试器会将代码理解为源自 example.js 文件而不是来自对其进行评估的脚本。

您确定 Require.JS 不支持开箱即用?我在 GitHub 上发布了我自己的 "Javascript DNA" 异步 loader/dependency 自动解析器,它非常简单,所以我猜 require.js 已经有类似的东西了...