【发布时间】:2016-02-27 17:37:01
【问题描述】:
假设我有以下文件error.js:
// this is invalid code
var a: 0;
然后在我的main.js 中我需要那个文件:
require("./error.js");
我从 Node.js 收到了一条漂亮、简单且易于理解的错误消息:
$ node main.js
/home/jfischer/error.js:2
var a: 0;
^
SyntaxError: Unexpected token :
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:413:25)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/jfischer/main.js:1:63)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
现在让我们尝试将其包装在 try/catch 块中,并通过将 main.js 更改为:
try {
require("./error.js");
}
catch(err) {
console.log(err.stack);
}
但现在我们得到:
$ node main.js
SyntaxError: Unexpected token :
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:413:25)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/jfischer/main.js:3:5)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
如何获得更人性化的部分,指出字符串中节点中断的确切文件和代码行?:
var a: 0;
^
Node.js documentation 似乎没有暴露除stack 属性之外的任何内容; message 和 name 不太有用。
我对将错误记录到文件或其他自定义错误记录解决方案感兴趣。任何帮助将不胜感激。
【问题讨论】:
-
谈谈时机。实现此修复的第一步仅在两小时前交付。 github.com/nodejs/node/pull/4013.
标签: javascript node.js error-handling console.log