错误:在pipe道节点输出为“|”时写入EPIPE 头”
我遇到了错误:
events.js:48 throw arguments[1]; // Unhandled 'error' event ^ Error: write EPIPE at errnoException (net.js:670:11) at Object.afterWrite [as oncomplete] (net.js:503:19)
当pipe道输出到头。 一个简单的例子是:
console.log('some string'); ... the same for 20 lines
然后node test.js | head
node test.js | head
得到错误,这似乎出现在Ubuntu 12.04运行约70%。 有什么问题?
head
命令只读取前几行。 你的代码期望它的所有输出被读取,并且如果它不能产生输出就会触发一个错误。 如果抛弃程序的输出是合法的,不要把它当作程序中的致命错误。 如果抛弃程序的输出是不合法的,那么请不要把它head
。
你目前有一个竞争条件。 如果在程序完成写入输出之前, head
开始忽略input,程序会得到一个exception。 如果程序在head
开始忽略input之前完成输出,那么一切都很好。
作为一个愚蠢的临时修复: node test.js | tee /dev/null | head
node test.js | tee /dev/null | head
现在, tee
将采取所有程序的输出。
如果在封闭pipe道的情况下将程序更改为成功退出,请尝试:
process.stdout.on('error', function( err ) { if (err.code == "EPIPE") { process.exit(0); } });
- asynchronous方法,更新发生时迭代器应该会发生
- Express Passport.js成功redirect不加载页面,请求保持挂起
- Nodejs和Expressjs在现场打印会话
- 对于基本的node.js项目,“属性”程序“不存在”
- 如何在node.js中为客户端http连接设置超时
- 确定正在运行的node.js应用程序中使用的NPM模块
- 如何使用gulp来设置ExpressJS来自动重新加载(gulp-live-server)
- 与本地客户端的Socket.io。 Origin null和Access-Control-Allow-Origin
- 如何删除amazon s3文件w / nodejs /angular