关于process.exit()的执行顺序
console.info(msg); process.exit(0); 上边两句,执行时,并不能得到打印输出,为什么呢?
6 回复
因为 你是用 的 是console.info 试试 console.log
也不行啊。。。
@collaroid @hexie 好用:
$ cat testlog.js
console.log('---');
process.exit(0);
$ node testlog.js
---
$
@leapon 我是这样放在process.on的回调里的,然后在外边抛了异常,如果没有退出这句,可以捕捉到异常,并打印出来,如果加上,就直接退出了。我想做的效果是程序有异常退出时能够把异常打印出来,怎么做好点呢?
process.on('uncaughtException', function(err) { console.log('Caught exception: ' + err); process.exit(0); });
问题似乎是node退出前,缓存区的数据还没来得及写入控制台或者文件。
试试console.warn(....)
或者 console.error(...)
,这2个操作对应stderr的输出,是不设缓存的。
console.log
和console.info
则对应stdout的输出,设有缓存区。仅适用于unix系统,win系统不确定。
有道理。
可以用timer
console.log('---');
setTimeout(function() {
process.exit(0);
}, 200);