Я использовал «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