提问人:JacobFischer 提问时间:11/25/2015 最后编辑:JacobFischer 更新时间:2/6/2019 访问量:242
记录捕获的错误与 Node.js 中未捕获的错误完全相同
Logging caught errors exactly the same as uncaught errors in 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)
我怎样才能得到更人性化的部分,指出字符串中中断的确切文件和代码行?
var a: 0;
^
Node.js 文档似乎没有公开该属性之外的任何内容; 并且帮助不大。stack
message
name
我对将错误记录到文件或其他自定义错误日志记录解决方案感兴趣。任何帮助将不胜感激。
答:
0赞
Trott
2/6/2019
#1
使用 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)
$
0赞
Rowf Abd
2/6/2019
#2
最新的节点 v11 甚至显示了导入模块的每个细节。
评论