首页 > 解决方案 > 节点 spawn_child 使用不同的节点版本

问题描述

我有一个运行 Webdriver 测试的节点脚本。我正在使用以下代码

const procInfo = child_process.spawn('wdio',
    0,
    pathModule.join(downloadDir, 'node_modules', '.bin', IsWin32 ? 'wdio.cmd' : 'wdio'),
    args, {
    cwd: downloadDir,
    env: env,
    detached: !IsWin32,
    stdio: ['ignore', 'pipe', 'pipe']
  });

我也安装了nvm。我的主要进程是从节点 v14 开始的。我想让用户从界面决定他们要运行哪个节点版本。

如何让 child_process 使用不同版本的节点,如 v10

标签: node.jschild-processnvm

解决方案


通过改变环境中的路径来解决它

下面是完整的解决方案


const IsWin32 = process.platform === 'win32';


const env = process.env;
  if(IsWin32)
    env.Path = '/home/testable/.nvm/versions/node/v10.24.1/bin' + pathModule.delimiter + env.Path;
  else
    env.PATH = 'C:\\ProgramData\\nvm\\v10.24.1\\' + pathModule.delimiter + env.PATH;

const procInfo = child_process.spawn('wdio',
    0,
    pathModule.join(downloadDir, 'node_modules', '.bin', IsWin32 ? 'wdio.cmd' : 'wdio'),
    args, {
    cwd: downloadDir,
    env: env,
    detached: !IsWin32,
    stdio: ['ignore', 'pipe', 'pipe']
  });

推荐阅读