【问题标题】:Node.js: console.log message doesn't show up if method throws exception... why?Node.js:如果方法抛出异常,console.log 消息不会显示...为什么?
【发布时间】:2013-11-13 01:11:55
【问题描述】:

在 Node.js 中,如果我有一个引发异常的方法,来自该方法的 console.log 语句不会触发。我认识到,在下面的简单测试用例中,我应该从 readFileSync 调用中捕获异常,或者对此采取防御措施。只是好奇是否有人可以向我解释这种行为。

简单的测试用例:

var fs = require('fs');

function readAFileThatDoesntExist(filename) {
    console.log(filename);
    fs.readFileSync(filename);
}

console.log("We're about to read a file that doesn't exist!");
readAFileThatDoesntExist("afile");

输出:

$ node test.js
We're about to read a file that doesn't exist!

fs.js:338
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT, no such file or directory 'C:\blog\projects\bloggen\scripts\afile'
    at Object.fs.openSync (fs.js:338:18)
    at Object.fs.readFileSync (fs.js:182:15)
    at readAFileThatDoesntExist (C:\blog\projects\bloggen\scripts\test.js:5:8)
    at Object.<anonymous> (C:\blog\projects\bloggen\scripts\test.js:9:1)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)

【问题讨论】:

  • 它按预期工作(节点 0.10.10)
  • 也适用于我 (v0.10.21)。
  • 是的,没有意识到我的节点有多远......谢谢。

标签: javascript node.js fs console.log


【解决方案1】:

啊,想通了。

似乎console.log 在进程退出之前没有完成...如果我使用console.warn,消息会显示出来。

这篇文章解释了它:is node.js' console.log asynchronous?

另外,我使用的是旧版本 (0.8.15),所以这可能不再相关。

【讨论】:

  • 非常感谢分享使用 node.js 时 console.warn 的替代选项
猜你喜欢
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多