использование pm2 с nodemon приводит к ошибке неверного дескриптора - PullRequest
0 голосов
/ 02 ноября 2018

Мой проект сейчас полностью ES6 +, с импортом / экспортом и тем, что пока не поддерживается node.js, поэтому я использую nodemon + babel для его запуска. Package.json выглядит так:

"scripts": {
    "start": "nodemon server/server.js --exec babel-node --presets babel-preset-env"
}

И теперь я перехожу на pm2, чтобы управлять этим приложением, у меня есть следующий ecosystem.config.js:

module.exports = {
  apps: [
    {
      name: 'test:app',
      script: 'npm -- start',
      watch: true,
    },
  ],
};

Это вызывает приложение, но с ошибками вроде:

3|your-tab | Error: EBADF: bad file descriptor, uv_pipe_open
3|your-tab |     at Object._forkChild (child_process.js:115:5)
3|your-tab |     at Object.setupChildProcessIpcChannel (internal/process/main_thread_only.js:117:30)
3|your-tab |     at startup (internal/bootstrap/node.js:135:23)
3|your-tab |     at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)
3|your-tab | child_process.js:115
3|your-tab |   p.open(fd);

Я думаю, что мой экосистемный файл неправильный, но как я могу это исправить, чтобы я мог запустить pm2 + babel + nodemon?

1 Ответ

0 голосов
/ 02 ноября 2018

Параметр script для приложения в конфигурации экосистемы должен быть существующим путем.

Есть несколько способов настройки вашей экосистемы для вашего приложения.

Использование интерпретатора по умолчанию (узла)

Вы можете написать скрипт узла, который запускает ваше приложение, и использовать его для опции скрипта. Для этого вы, вероятно, будете использовать модуль узла child_process.

Использование bash в качестве интерпретатора

Вы можете настроить интерпретатор для приложения на bash. Затем напишите bash-скрипт для запуска вашего приложения.

Скажем, у вас есть run-yap скрипт оболочки bash, содержащий:

npm start

Файл конфигурации экосистемы должен выглядеть так:

module.exports = {
  apps: [
    {
       script: "run-yap",
       name: "yap",
       interpreter: "bash",
    }
  ]
}
...