Рабочий каталог NodeJs child_process

Я пытаюсь выполнить дочерний процесс в другом каталоге, а не в каталоге его родителя.

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

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

Я делаю вышеописанное (хотя, конечно, запуск "pwd" - это не то, что я хочу делать в конце). Это приведет к записи pwd родительского процесса в стандартный вывод, независимо от того, какое значение я указал для параметра cdw.

Что мне не хватает?

(Я убедился, что путь, переданный как параметр cwd, действительно существует)


person Jeroen De Dauw    schedule 19.09.2013    source источник


Ответы (1)


Параметр является сокращением от текущий рабочий каталог и пишется cwd, а не cdw.

var exec = require('child_process').exec;
exec('pwd', {
  cwd: '/home/user/directory'
}, function(error, stdout, stderr) {
  // work with result
});
person hexacyanide    schedule 19.09.2013
comment
О.. опечатка.. Теперь удивляюсь, как я этого не заметил. Исправление опечатки заставило код работать так, как ожидалось. - person Jeroen De Dauw; 19.09.2013
comment
Кажется, не работает. На windows 10, не уверен, что это имеет значение - person Matt Westlake; 17.05.2018
comment
@Matt Westlake Я знаю, что, вероятно, опаздываю, но я думаю, что в Windows вам нужно выполнить cd вместо pwd вот так var cmd = `cd foo/bar ⏎ ls`; var exec = require('child_process').exec; ... - person vbtheory; 02.07.2019
comment
@Jeroen De Dauw, лол, мы все там были - person Lennon McLean; 11.01.2021