比方说,我有以下文件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
不太有用。
我很感兴趣记录错误的文件或其他自定义错误记录解决方案。任何帮助,将不胜感激。
当您运行Node.js的4码中的信息丢失,但在Node.js的6和更新,即使捕获错误时提供了有用的信息。 Node.js的4不再支持我的你不使用它了这一点想象。但是,如果你或任何人是:使用Node.js的6或更高版本,你会得到你想要的信息。
$ nvm use 4
Now using node v4.9.1 (npm v2.15.11)
$ node -v
v4.9.1
$ node main.js
SyntaxError: Unexpected token :
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/Users/trott/temp/main.js:2:1)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
$ nvm use 6
Now using node v6.15.1 (npm v3.10.10)
$ node -v
v6.15.1
$ node main.js
/Users/trott/temp/error.js:2
var a: 0;
^
SyntaxError: Unexpected token :
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/trott/temp/main.js:2:1)
$