Как запустить «npm start» из файла PM2 JSON? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь запустить Docusaurus на Windows Server 2016 с Node.js версией 12.14.0 через PM2 на IIS10. Я использую PM2, поэтому я могу перезапустить приложения после перезагрузки сервера. Теперь я должен признать, что сегодня я впервые пытался сделать что-то с Node.js, поэтому, пожалуйста, потерпите меня.

Обычно запускается , вызывая npm run start в Справочник Docusaurus. При тестировании Node.js и запуске приложения «Hello World» при перезагрузке сервера я использовал ecosystem.config.js, как это предлагается в документации PM2. Это называется javascript файл, подобный так.

module.exports = {
    apps: [
      {
        name: "HelloWorld",
        script: "apps\\hello_world.js",
        instances: 1
      }
    ]
  }

Это работало нормально, но я не смог найти никакой документации о том, как запустить npm start из этого файла (хотя я пытался вызвать отдельный пакет файл, который тоже не работал). Затем я увидел здесь , что я могу вызвать файл JSON, в котором задокументированы дополнительные параметры.

JSON файл конфигурации:

{
    "apps": [
        {
            "name": "docs",
            "cwd": "apps\\docs",
            "script": "npm",
            "args": "start"
        },
        {
            "name": "HelloWorld",
            "script": "apps\\hello_world.js"
        }
    ]
}

Сценарий «HelloWorld» запускается, но не приложение docs. Отчет

pm2 предлагает следующий вывод:

PM2        | 2020-01-07T17:54:20: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:20: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:20: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:21: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] starting in -fork mode-
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] online
PM2        | 2020-01-07T17:54:22: PM2 log: App [docs:0] exited with code [1] via signal [SIGINT]
PM2        | 2020-01-07T17:54:22: PM2 log: Script C:\PROGRAM FILES\NODEJS\NPM.CMD had too many unstable restarts (16). Stopped. "errored"

, который привел меня к этой проблеме на GitHub. Похоже, что по этим вопросам не наблюдается большой активности, и были исторические 1062 * случаи этого тоже.

Я думаю, что может быть что-то не так с PM2, или есть проблема с этим, потому что я не могу запустить документы через командную строку с PM2.

C:\Node JS\apps\docs>pm2 start npm --name "docs" -- start

Кто-нибудь есть какие-либо идеи о том, как я могу заставить это работать или пытался сделать что-то подобное? Я бы согласился на ответ:

  • Альтернативный способ запуска Docusaurus на Windows Сервер.
  • Альтернатива использованию PM2.
  • Любые другие идеи .

Извинения, если я прошёл.

РЕДАКТИРОВАТЬ:

Выход pm2 start ecosystem.json --only docs

C:\Node JS>pm2 start ecosystem.json --only docs
[PM2][WARN] Applications docs not running, starting...
[PM2][ERROR] Process failed to launch EPERM: operation not permitted, open 'C:\etc\.pm2\logs\docs-out.log'

Журнал, на который он ссылается, пуст. docs-error.log повторяет одну и ту же ошибку несколько раз, но не обновлялась с прошлой ночи. Вероятно, он был создан мной, пробуя разные синтаксисы в файле JSON, но в любом случае публикуя его.

SyntaxError: Unexpected token ':'
    at Module._compile (internal/modules/cjs/loader.js:895:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Object.<anonymous> (C:\Users\user\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.js:27:21)
    at Module._compile (internal/modules/cjs/loader.js:959:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Function.Module._load (internal/modules/cjs/loader.js:727:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
C:\PROGRAM FILES\NODEJS\NPM.CMD:1
:: Created by npm, please don't edit manually.

1 Ответ

0 голосов
/ 10 января 2020

Я отказался от этой идеи. Тот факт, что я не могу запустить сайт в pm2 только из задокументированной командной строки, наряду с проблемой github, не сулит ничего хорошего.

Я решил просто npm run build и обслуживать данные c файлов через IIS. Нам потребуется написать сценарий на стороне сервера, чтобы пользователи могли обновлять содержимое, повторно запускать сборку и обновлять файлы stati c для IIS.

...