繁体   English   中英

我可以从缓冲区而不是从另一个文件运行带有节点脚本的节点子进程吗?

[英]Can I run a node child process with node script from a buffer and not from another file?

目前,我正在从父节点脚本的字符串/缓冲区中生成节点脚本。 然后,我将生成脚本写入文件中,并在子进程中执行该文件。 最后,我取消链接临时脚本文件。

这是简化的代码:

fs.writeFileSync(scriptFile, program_code); 
script_output = child_process.execSync("node " + scriptFile).toString('utf8');
fs.unlinkSync(scriptFile);

现在我有了输出,我继续进行进一步处理。 这很好。

但是,我觉得如果可以以某种方式从我拥有的内存缓冲区中运行节点脚本,而不是先将其写入文件,则可以避免写入临时文件的开销。

我查看了node的child_process模块,但没有找到任何方法来执行此操作。 可能是我错过了一些东西,还是有其他方法可以做到这一点? 我正在寻找这样的东西:

 script_output = child_process.execSync("node " + ...).toString('utf8')

也许一些shell编程技巧? 我查看了节点的-e-i选项,但并没有削减它。 我尝试了带有-i选项的<<文档外壳程序功能,但是REPL模式的<提示符似乎出现了语法问题。

查看Node的VM API 我实际上没有尝试过,但是看起来vm.runInNewContext()可能会执行您需要的操作,而无需启动Node的新副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM