gpt4 book ai didi

javascript - 子进程 exec cwd,未设置当前工作目录

转载 作者:行者123 更新时间:2023-11-30 08:23:31 36 4
gpt4 key购买 nike

我正在构建一个 node.js 应用程序。为了执行命令,我正在使用子进程。在执行命令之前,我必须需要更改 CWD(当前工作目录)。所以我有如下代码。

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

let opts = {
"maxBuffer": 1024 * 5000,
"timeout": toolTimeout,
"cwd": /opt/somepath,
"env": {
"PATH": process.env.PATH + ':' + /opt/somepath,
"LANG": "en_US.UTF-8"
}
};
exec(command, opts, function(error, stdout, stderr) {
}

但上面的设置不起作用,因为它在执行命令之前仍然没有更改 CWD,并且命令是从 Node 文件所在的当前目录执行的。如果有人有任何想法,请提供帮助。

最佳答案

您粘贴的代码片段应该可以工作,CWD 应该根据您的值更改当前目录。

虽然我怀疑你明确设置了环境。

"env": {
"PATH": process.env.PATH + ':' + /opt/somepath,
"LANG": "en_US.UTF-8"
}

您可以覆盖 env 的所有其他值,但您只是在 env 中设置 PATH 和 LANG。覆盖 env 可能有害,因为它可能包含几个其他变量和值,最终可能导致任何相关命令失败。

试着像下面那样做。

let opts = {
"maxBuffer": 1024 * 5000,
"timeout": toolTimeout,
"cwd": /opt/somepath,
"env": process.env
};
opts.env.PATH = opts.env.PATH + ':' + nlu_plmtool_dir;
exec(command, opts, function(error, stdout, stderr) {
}

通过这样做,您将在 env 中设置 PATH 并在 env 中保留已经设置的值。

关于javascript - 子进程 exec cwd,未设置当前工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49644022/

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