Я использую модуль 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
.Другими словами, когда любое значение установлено на env
, то порожденный процесс завершается неудачей, поскольку даже встроенные команды, такие как which
, неизвестны.
EDIT: возможно, стоит упомянуть, чтоЯ использую Электрон.Я знаю, что Electron каким-то образом соединяет Node и Chromium, так что, может быть, это немного странно?