我必须在另一个节点进程中执行一个node命令,如下所示:
require('child_process').exec (`${<path of current node executable>} someModule`);
如何在运行时检索节点可执行路径以执行此命令。
答案 0 :(得分:5)
process.execPath
应该是您所需要的。
process.argv0
并不总是指向node
二进制文件。
process.argv0属性存储Node.js启动时传递的 argv [0] 原始值的只读副本。
在官方文档的示例中,它演示了process.argv0
不是节点二进制文件的情况。 customArgv0
用于exec
-a
标记。
$ bash -c 'exec -a customArgv0 ./node'
> process.argv[0]
'/Volumes/code/external/node/out/Release/node'
> process.argv0
'customArgv0'
如果您尝试执行其他节点应用,那么如何查看child_process.fork
?
您的代码应如下所示。
// fork()'s first argument should be the same as require();
// except that fork() executes the module in a child process
require('child_process').fork(`someModule`);
如文档中所述,fork()
使用与process.execPath
相同的节点二进制文件,或者您可以指定其他节点二进制文件来执行模块。
默认情况下,child_process.fork()将生成新的Node.js实例 使用父进程的process.execPath。 execPath options对象中的属性允许替代执行 要使用的路径。