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。 任何帮助,将不胜感激。
- 如何用console.log完全输出缓冲区内容
- 卡在console.log(JSON.stringify(req))中间件
- 有没有Node.js console.log长度限制?
- Console.log字体大小在NodeJS中
- 为什么Chrome会将引用types为Date的对象的原型视为“Object {}”,而不是“Date {}”?
- 检查一个模块是否存在,如果是这样,用它replace控制台,否则不。 不工作,控制台得到未定义
- console.log和util.inspect不能正确打印对象
- 在nodejs中的console.log循环
- 如何使用“console.log”在NodeJS中使用命令行“Local heroku”在“Mac Terminal”中显示多行?