как решить ошибку pm2 в кластерном режиме с помощью ts-node

Я пытаюсь использовать pm2 с ts-узлом для развертывания.

Когда я использую cluster-mode, возникает ошибка экземпляра pm2, которая не может найти модуль...

Ошибка: не удается найти модуль "{path}/start"

в основном ({путь}/node_modules/ts-node/dist/bin.js:178:20)

на Объект. ({путь}/node_modules/ts-node/dist/bin.js:404:5)

Вот моя экосистема.config.js и "production": "pm2-runtime start ecosystem.config.js --env production" это мой сценарий пакета.

module.exports = {
  apps: [
   {
            script: "ts-node",
            args: "./server.ts",
            instances: "max",
            exec_mode: 'cluster_mode',
            node_args: '-r esm'
            env_production: {...}
   }
  ]
}

Когда я использую fork-mode, а не cluster-mode, приложение работает хорошо. Я не знаю, как решить эту проблему. пожалуйста, скажите мне любые идеи.


person kkangil    schedule 30.12.2019    source источник


Ответы (1)


Насколько я понимаю, использование любого интерпретатора, отличного от JS, требует режима fork, что запрещает прямое выполнение машинописного текста. Вам нужно скомпилировать /server.ts в /server.js, чтобы включить режим кластера.

https://pm2.keymetrics.io/docs/tutorials/using-transpilers-with-pm2#execution-interpreter< /а>

Самый простой способ использовать транспиляторы с PM2 — переопределить интерпретатор выполнения (exec_interpreter). Обратите внимание, что если это изменить, ваш код будет работать только в режиме fork_mode.

Разница в режимах кластера и вилки в PM2

person maosmurf    schedule 08.01.2020