如何在运行时

时间:2018-04-20 05:01:56

标签: node.js

我必须在另一个节点进程中执行一个node命令,如下所示:

require('child_process').exec (`${<path of current node executable>} someModule`);

如何在运行时检索节点可执行路径以执行此命令。

1 个答案:

答案 0 :(得分:5)

process.execPath应该是您所需要的。

process.argv0并不总是指向node二进制文件。

如同official Node document

  

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对象中的属性允许替代执行   要使用的路径。