TL; DR: Как развернуть процесс, который находится за пределами текущего текущего процесса?Как развернуть процесс другого модуля
Я пытаюсь использовать child_process
из Nodejs, чтобы запустить другой процесс nodejs на выходе процесса родителя.
я успешно выполнил процесс с exec
, но мне нужен дочерний процесс не зависит от родителей, так что родители могут выйти без ожидания ребенка, поэтому я попытался с помощью spawn
с опцией detached: true, stdio: 'ignore'
и unref()
этот процеса:
параметр options.detached to true позволяет дочернему процессу продолжать работу после выхода родительского элемента.
spawn('node MY_PATH', [], {detached: true, stdio: 'ignore'}).unref();
Это дает: ошибка
node MY_PATH ENOENT
. к сожалению, я не смог решить проблему.
После того, как возникли проблемы достижения этой цели с spawn
и снова чтение documentation я полагал, должен фактически использовать fork
:
The child_process.fork() метод является частным случаем child_process.spawn() используется специально для создайте новые процессы Node.js.
fork()
не принимает команду в качестве своего первого аргумента, а modulePath
, который я не могу показаться, чтобы соответствовать, так как сценарий я пытаюсь запустить как дочерний процесс ISNT в каталоге текущего запущенного процесса , но в зависимости от его.
Назад к стартовой TL; DR - как развернуть процесс, который находится за пределами текущего текущего процесса?
Любая помощь была бы высоко оценена!
EDIT:
Обеспечение решения ошибки spawn
ENOENT может быть очень полезно тоже!
http://stackoverflow.com/questions/19902828/why-does-enoent-mean-no-such-file-or-directory –
ли 'MY_PATH' переменную? если это так, вы должны попробовать: '' node '+ MY_PATH' (или использовать строку шаблона) – GilZ
@GilZ нет, на самом деле это относительная строка для '../../ node_modules/bla/bla/bla.js' –