如何在Node.js中分离一个进程,从父进程中的缓冲区中运行JS代码,而不是从文件中运行?

我在用

child_process.fork(scriptFile) 

fork一个subprocess并在scriptFile中执行JS。 问题是我想优化它,因为我想要运行的JS代码已经在父级的缓冲区中可用。 我现在将它写入一个文件,然后指定该path到child_process.fork。 这涉及到两个冗余的I / O。 首先我把JS写到父文件中。 然后由subprocess读取。

任何方式来防止这种情况?

把我的评论按要求回答

我不认为你所要求的存在。

您可以启动一个通用的node.js应用程序,该应用程序已经在磁盘上,该应用程序被编码以从stdinput获取其代码,然后您可以将代码提供给stdinput以供存根应用程序读取。 没有额外的读取或写入你的代码的方式。


下面是两个简单的应用程序的例子:

首先,从stdin中读取并执行它的应用程序:

 // read-from-stdin.js let input = ""; process.stdin.on('data', function(chunk) { input += chunk; }); process.stdin.on('end', function() { eval(input); }); process.stdin.on('error', function(err) { console.log("err:", err); }); 

然后,一个应用程序启动该应用程序,并传递一些JS来执行:

 const spawn = require('child_process').spawn; let child = spawn('node', ['read-from-stdin.js'], {stdio: ['pipe', 'inherit', 'inherit']}); child.on('error', function(err) { console.log("err on spawn ", err); }); child.stdin.write("console.log('Hello from your parent')"); child.stdin.end(); 

当我运行第二个代码时,它启动第一个代码,并通过stdin发送一个console.log()语句,第一个应用程序中的代码从stdin读取,然后执行。