5分钟了解Node.js 标准/错误输出和process.exit
沉沙 2018-07-26 来源 : 阅读 1324 评论 0

摘要:本篇Node.js教程探讨了Node.js 标准/错误输出和process.exit,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

node.js中,各种模块有一种标准的写法:

this._process.exec(command, options, function (err, stdout, stderr) {

            callback(err, stdout, stderr);

        })

这里说的标准,是指回调函数,一般有err作为第一个参数,然后是具体的数据。

 

写服务器程序的时候,或多或少会用到child_process这个模块,而这个模块的用法正如上边代码所示。

例如调用一个shell命令删除文件,可以这样:

    child_process.exec('rm -rf xxxx', function (err, stdout, stderr) {

            callback(err, stdout, stderr);

        })

返回的参数,其实err是一个对象,而stdout和stderr是字符串,stdout就是执行的子进程中使用标准输出的信息,而stderr就是子进程中错误输出流的内容。

 

那么问题来了,如果我们自己用node.js写一个简单脚本,让其他node程序去调用,怎么模仿实现一样的返回情况呢?

其他程序调用的时候,可能是这样:

child_process.exec('node doSomething.js', function (err, stdout, stderr) {

            callback(err, stdout, stderr);

        })

如果我们在子进程中,使用console.log/error打印信息,结果,会发现,在父进程的回调函数中将什么都得不到。

奇了怪了,console.error不就是错误输出吗?好吧,这只能怪自己写web写多了,然后node.js并不是这样的。

 

接下来就要介绍三个玩意,分别对应stdout、stderr和err。

process.stdout.write

process.stderr.write

process.exit(非0)

 

write函数接受的是一个字符串,那么为了方便使用,我们可以封装一下:

console.error = function () {

    var msg = Array.prototype.join.call(arguments, ', ');

    process.stderr.write(msg);

};

 

最后,如果程序跑出错,除了在stderr中输出信息外,我们还可能需要立刻终止程序。

按照linux的规范,一般成功用0表示,而非0则表示失败。那么process.exit也遵循这个规范。

· process.exit(0)表示成功完成,回调函数中,err将为null;

· process.exit(非0)表示执行失败,回调函数中,err不为null,err.code就是我们传给exit的数字。

 

本文由职坐标整理发布,学习更多的Node.js相关知识,请关注职坐标WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程