node.js 标准/错误输出 和 process.exit

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的数字。
时间: 2024-08-01 18:03:43

node.js 标准/错误输出 和 process.exit的相关文章

node.js 的错误提示

npm ERR! at Object.parse (native) npm ERR! at RegClient.<anonymous> (/usr/local/node/lib/node_modules/npm/node_ modules/npm-registry-client/lib/request.js:266:23) npm ERR! at Request._callback (/usr/local/node/lib/node_modules/npm/node_modu les/npm-

python 以标准输出(sys.stdout)为例,看python的标准输入、标准错误输出

看了一个博客,挺不错的.http://www.cnblogs.com/turtle-fly/p/3280519.html 标准输出(sys.stdout)对应的操作就是print(打印)了,标准输入(sys.stdin)则对应input(接收输入)操作,标准错误输出和标准输出类似也是print(打印). python最基本的操作 - 打印: print 1 其效果是把 1 写在console(命令行)里面让你看. 实际上他的操作可以理解为:把console(命令行)作为一个板子,通过sys.st

linux将标准输出和标准错误输出都重定向到一个文件?

需求描述: 今天在写crontab,里面有标准输出和错误输出,之前使用的是 > /dev/null 2>&1 那这个意思也就等同于将标准输出和错误输出都输出到/dev/null中,在这里记录下 操作过程: 1.原crontab定时任务,分别对标准输出和标准错误输出进行定向 [[email protected] mail]# crontab -l */1 * * * * /usr/sbin/ntpdate 192.168.53.22 >/dev/null 2>&1 2

初学node.js之控制台输出and监听http请求

对于NODE.JS安装很简单就是找到对应电脑版本直接安装就可以,目前所知,不用任何配置. 安装好以后,直接会有node.js command prompt运行程序. 然后就可以创建第一个小程序了,直接在一个文件夹中创建一个文件,比如first.js,然后打开,在里面写入:console.log("Hello JS"):就这样第一个程序就完成了.打开node.js command prompt进入到该文件夹,输入 node first.js就会发现在控制台打印出:Hello JS 字样.

Typescript 开发环境安装、Node.js安装以及输出HelloWorld

1.为什么要学习Typescript 语言呢 原因很简单,当然是为了工作呀,因为工作使我接触到了Typescript语言,感觉它比较像C#.Java 这样面向对象的语言,由于最近在使用它开发项目所以系统学习一下,在此记录一下学习过程. 2.Typescript 语言百度百科介绍 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.TypeScript还遵循ES6.ES5规范,同时因为是Ja

node.js响应,输出文本解决乱码问题

res.setHeader('Content-Type','text/plain;charset="utf-8"') Content-Type的类型 text/plain  文本 text/html  包含html标签的文本 例子: var http = require('http') var server = http.createServer() server.on('request',function(req,res){ if(req.url === '/text'){ res.

Node.js API —— process(进程)

// 说明 Node API 版本为 v0.10.31.    中文参考:http://nodeapi.ucdok.com/#/api/,http://blog.sina.com.cn/oleoneoy 本段为博主注解. 目录 ● 进程    ○ Event: 'exit'    ○ Event: 'uncaughtException'    ○ Signal Events    ○ process.stdout    ○ process.stderr ○ process.stdin ○ pro

Node.js 使用process.nextTick

今天发现Node.js文档很好地解释了如何使用process.nextTick. Node.js文档链接 http://nodejs.org/api/process.html#process_process_nexttick_callback process.nextTick(function callback(){ }); Node.js确保callback会在处理下一个事件前被调用. 下面是Node.js文档的翻译: process.nextTick(callback) 在下一个事件循环中调

Fundebug上线Node.js错误监控啦

作为全栈JavaScript错误实时监测平台,Fundebug的Node.js实时错误监测服务上线啦,我们能够帮助开发者及时,高效地发现并且解决Node.js错误,从而提高开发效率,并提升用户体验. Fundebug为什么监测Node.js? 程序员通常是比较自信的,他们坚持自己写的代码没有问题.然而,再追问一下自己: 我的代码真的100%没有问题吗? 我做了完整的单元测试吗? 难道我要花更多的时间没完没了的写单元测试? 那么问题在哪? 当Node.js后台程序在服务器上出错了,然而开发者并不知