Процесс spawn pm2 в Windows может запускать только .bat или .exe. Необходимо включить {shell: true}, чтобы он действительно работал.
При отладке spawn на windows стала очевидной нелепая ошибка spawn pm2 ENOENT. После того, как я покопался и не нашел абсолютно никаких реальных решений для божества StackOverflow, я покопался в куче проблем GitHub и наконец нашел адекватное решение для Windows spawn.
Истинное решение найдено https://github.com/nodejs/node-v0.x-archive/issues/2318
@ DrPizza решение
@ OrangeDog Ну, вы все равно не можете написать переносной пакетный файл.
@ DrPizza предложила сегодня, чтобы мы могли добавить опцию {shell: true} в spawn. Мне нравится идея. Это позволяет использовать spawn для тех же целей, что и exec, без буферизации всего вывода. У нас также есть странное различие между exec и execFile; мы могли бы просто сделать те же функции, но с другим значением по умолчанию для опции оболочки. @ry, @bnoordhuis, что вы, ребята, думаете?
Для меня окончательное решение заключается в следующем
let env = env === 'production'? «prod»: «песок»; // контекст для переменной env
let deploy = spawn ('pm2', ['deploy', env, 'update', '&&', 'pm2', 'deploy', env, 'exec', '' sudo pm2 reload "'], {shell: true});