Отладка Windows «Ошибка: порождает ENOENT» на node.js - PullRequest
0 голосов
/ 17 мая 2019

Процесс 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});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...