使用 .fork() 时,您正在启动一个完全独立的进程,因此您无法在父进程和子进程之间传递引用(并且仅限于在创建进程后进行消息传递)。
一种不需要消息传递的方法是在 fork 进程时传递参数(在数组中)。尽管我相信您必须坚持使用简单的字符串/数字值(但从代码中看起来这对您来说可能就足够了)。例如。:
在顶层:
var name = 'bob'
var args = [name];
var childProcess = require('child_process').fork(__dirname + '/worker', args);
在工作进程中:
var name = process.argv[2]; //AFIAK elements 0 and 1 are already populated with env info
更新
如果您真的想走消息传递路线(如果您已经需要发送消息,我会犹豫推荐),那么您可以区分消息类型,如下所示(可能有更优雅的方式):
在顶层:
var childProcess = require('child_process').fork(__dirname + '/worker');
childProcess.send({msgtype:'dependencies', content:dependencies});
//Then to send 'normal' message:
childProcess.send({msgtype:'myothermessagetype', content:'some content'}
在工作进程中:
process.on('message', function(msg){
if(msg.mtype == 'dependencies') {
var dependencies = msg.content;
//Do something with dependencies
} else if(msg.mtype == 'myothermessagetype') {
var normalmessage = msg.content;
//Do something in response to normal message.
}
});