无论出于何种原因,在Node.js中,函数process.send在某些环境中定义,但在其他环境中未定义.例如,当我从Node.js中的父进程分叉子进程时,如下所示:
//parent process
var cp = require('child_process');
var k = cp.fork('./child.js',['arg1','arg2','arg3']);
k.send('fail'); //k.send is defined...
process.send("ok, let's try this..."); //process.send is NOT defined
在子进程内:
//child.js
process.send('message');  //process.send is defined, and will send a message to the parent process above
为什么process.send在某些Node.js进程中有条件地定义而不是其他进程?看起来像Node.js架构师的糟糕设计决策.
我知道如何解决这个问题的唯一方法是:
if(typeof process.send === 'function'){ 
process.send('what I want to send')
});
Ale*_*lan 18
子进程有一种process.send方法可以与生成它们的进程进行通信,而根进程没有任何"父"进行通信,所以它不在那里.来自文档:
在子进程中,进程对象将具有send()方法,并且进程将在每次在其通道上接收消息时发出对象.
为了避免"使用条件"丢弃代码,临时解决方案可能只是将"noop"函数放在可能产生进程的任何"根"文件顶部的位置:
process.send = process.send || function () {};