NodeJS子进程工作目录

eulz3vhy  于 2022-10-02  发布在  Java
关注(0)|答案(2)|浏览(136)

我试图在不同于其父进程的目录中执行子进程。

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

exec(
    'pwd',
    {
        cdw: someDirectoryVariable
    },
    function(error, stdout, stderr) {
        // ...
    }
);

我正在做上述工作(当然,运行“pwd”并不是我最终想要做的事情)。这将最终将父进程的PWD写入标准输出,而不管我为CDW选项提供了什么值。

我遗漏了什么?

(我确实确保了作为CWD选项传递的路径确实存在)

w7t8yxp5

w7t8yxp51#

该选项是当前工作目录的缩写,拼写为cwd,而不是cdw

var exec = require('child_process').exec;
exec('pwd', {
  cwd: '/home/user/directory'
}, function(error, stdout, stderr) {
  // work with result
});
fhity93d

fhity93d2#

如果你在Windows上,你可能会被路径分隔符卡住。您可以通过使用内置Node.js path模块中的join函数来解决这个问题。以下是@hexusyanide的答案,但使用execSyncjoin而不是exec(它不会阻塞事件循环,但对脚本来说并不总是一个大问题)和unix文件路径(它们比窗口文件路径更酷、更好)。

const { execSync } = require('child_process');
const { join } = require('path');
exec('pwd', { cwd: path.join('home', 'user', 'directory') });

相关问题