gpt4 book ai didi

javascript -/bin/sh : 1: node: not found with child_process. 执行

转载 作者:行者123 更新时间:2023-12-03 06:28:20 25 4
gpt4 key购买 nike

我尝试使用内置的 child_process 模块运行 nodejs 脚本,它工作正常,直到我给它提供选项。特别是当我将 env 属性添加到选项对象时。

let exec = require('child_process').exec;

exec('node random.js', { env: {} }, (err) => {
console.log(err);
})

然后我收到此错误:/bin/sh: 1: node: not find

我安装了 nvm 的 Node ,也许这就是原因,但不知道为什么。

最佳答案

如果您从脚本中执行新的 shell,则该 shell 与父 shell(您的脚本)的环境不同。

所以你必须提供所有需要的环境。

就您的情况而言,我认为您可以采取两种方式。

首先:使用完整路径创建一个 Node 命令:

let exec = require('child_process').exec;

let node_cmd = '/path/to/my/node/node';

exec(node_cmd + ' random.js', { env: {} }, (err) => {
console.log(err);
});

因此您可以使用环境变量来处理路径,或者在需要时更改它。

其次,将路径变量传递给命令:

let exec = require('child_process').exec;

let env_variables = 'PATH='+process.env.PATH;

let cmd = env_variables + ' node random.js';

exec(cmd, { env: {} }, (err) => {
console.log(err);
});

另一种方法是使用 dotenv包。

关于javascript -/bin/sh : 1: node: not found with child_process. 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542947/

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