我有一个用node.js编写的脚本,它使用'net'库并通过tcp与远程服务进行通信。该脚本使用'node script.js >> log.txt'命令启动,并且脚本中使用console.log()函数记录的所有内容都会被写入log.txt,但有时脚本会崩溃,我无法找到原因,并且在脚本崩溃时log.txt中没有任何记录。
如何捕获崩溃原因?
我有一个用node.js编写的脚本,它使用'net'库并通过tcp与远程服务进行通信。该脚本使用'node script.js >> log.txt'命令启动,并且脚本中使用console.log()函数记录的所有内容都会被写入log.txt,但有时脚本会崩溃,我无法找到原因,并且在脚本崩溃时log.txt中没有任何记录。
如何捕获崩溃原因?
你不能监听 uncaughtException
事件 吗?大致如下所示 =>
process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});
顺便提一句,按照Felix Geisendörfer的文章建议,在那之后你应该重新启动进程。
通过拆分stdout
和stderr
来捕获异常要容易得多。就像这样:
node script.js 1> log.out 2> err.out
默认情况下,Node将普通输出记录在stdout中,我相信您正在使用>>
捕获它。
如评论中所述,分段错误是一个由shell发送到stderr的信号,而不一定是由您的程序引起的。有关其他选项,请参见此unix.stackexchange答案。