gpt4 book ai didi

node.js - 指定 `env` 时,childProcess.spawn 失败

转载 作者:搜寻专家 更新时间:2023-10-31 22:34:43 25 4
gpt4 key购买 nike

我正在使用 Node 的 childProcess 模块来尝试运行 NPM 任务。

当我执行以下操作时,一切正常文件:

  const child = childProcess.spawn('npm', ['run', taskName], {
cwd: `${parentPath}/${projectId}`,
});

但是,我需要提供环境变量才能使命令成功。我尝试使用 env 参数,如下所示:

  const child = childProcess.spawn('npm', ['run', taskName], {
cwd: `${parentPath}/${projectId}`,
env: {
...process.env,
PORT: 4545,
}
});

执行此操作时,出现以下错误:Uncaught Error: spawn npm ENOENT

事实证明,无论 env 值是什么,也无论命令是什么,我都会收到此错误。例如:

  const child = childProcess.spawn('which', ['npm'], {
cwd: `${parentPath}/${projectId}`,
env: process.env,
});

此代码因 Uncaught Error: spawn which ENOENT 而失败。换句话说,当 any 值设置为 env 时,生成的进程将失败,因为即使像 which 这样的内置命令也是未知的。

编辑:也许值得一提的是我正在使用 Electron。我知道 Electron 以某种方式融合了 Node 和 Chromium,所以这可能有点怪癖?

最佳答案

即使不传递 env,您也可以覆盖 PORT,使用 /usr/bin/env

const child = childProcess.spawn('env', ['PORT=4545', 'npm', 'run', taskName], {
cwd: `${parentPath}/${projectId}`,
});

如果您还没有检查 process.env,请确保您使用已知的良好值覆盖 PATH

const child = childProcess.spawn('npm', ['run', taskName], {
cwd: `${parentPath}/${projectId}`,
env: {
PATH: '/bin:/usr/bin:/usr/local/bin',
PORT: 4545,
}
});

关于node.js - 指定 `env` 时,childProcess.spawn 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50661717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com