logging捕获的错误与Node.js中的未捕获错误完全相同
比方说,我有以下文件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)
我怎么能得到更多的人性化的部分指出确切的文件和代码节点的行在一个string中爆发?
var a: 0; ^
Node.js文档看起来不会暴露stack
属性之外的任何东西; message
和name
不太有用。
我有兴趣将错误logging到文件或其他自定义错误logging解决scheme。 任何帮助,将不胜感激。