PM2 start npm - ошибка запуска - PullRequest
       11

PM2 start npm - ошибка запуска

0 голосов
/ 25 апреля 2018

Я использовал «npm start» для запуска моего экспресс-сервера (для моего проекта angular 2 cli) в течение нескольких недель, и он работает нормально, за исключением того, что он не перезапускается автоматически при сбое.Теперь, чтобы он перезагрузился автоматически, я попытался использовать PM2.Исходя из моих исследований, это должно быть так же просто, как запустить

pm2 start npm -- start

Однако это сразу дает мне статус «остановлен».Выполнение «pm2 show» заставляет меня посмотреть на ошибку в npm-error-0.log, и там я вижу эту ошибку

SyntaxError: Unexpected token :
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:588:28)
    at Object.Module._extensions..js (module.js:635:10)
    at Module.load (module.js:545:32)
    at tryModuleLoad (module.js:508:12)
    at Function.Module._load (module.js:500:3)
    at Object.<anonymous> (C:\Users\mingliu_99\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:83:21)
    at Module._compile (module.js:624:30)
    at Object.Module._extensions..js (module.js:635:10)
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
(function (exports, require, module, __filename, __dirname) { :: Created by npm, please don't edit manually.
                                                              ^

Это мой стартовый скрипт в моем файле package.json:

"start": "cross-env NODE_ENV=production node dist-prod/server.js"

Итак, в чем здесь проблема?

Кстати, когда я пытаюсь с помощью этой команды

pm2 start dist-prod/server.js

кажется, что она запускается нормально (с зеленым онлайн-статусом).Однако сервер не обслуживается, что, вероятно, связано с отсутствием параметра env.

ОБНОВЛЕНИЕ:

Я обнаружил это , и оказалось, что это проблемаpm2 в windows 10.

Обходной путь, предложенный в конце этого поста, кажется, работает нормально.

По сути, сначала установите node-cmd и создайте startcript.js:

var cmd=require('node-cmd'); 
cmd.run('npm start');

, а затем запустить

pm2 start startscript.js

1 Ответ

0 голосов
/ 22 июля 2018

Вы должны ссылаться на сценарии установки сервера. Например.pm2 start app:name backend scripts

В этом случае ваши сценарии - это любые script.js, слушающие ваш сервер.

Для просмотра и перезагрузки немедленно используйте pm2 start app:name backend scripts --watch

...