关于process.exit()的执行顺序
发布于 12 年前 作者 collaroid 8707 次浏览 最后一次编辑是 8 年前

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.logconsole.info 则对应stdout的输出,设有缓存区。仅适用于unix系统,win系统不确定。

有道理。

可以用timer

console.log('---');
setTimeout(function() {
    process.exit(0);
}, 200);
回到顶部