pm2 не может запустить экспресс-приложение

#node.js #express #pm2

Вопрос:

Я написал простое экспресс-приложение. Он правильно работал с «запуском npm». Сценарии в package.json таковы:

 "type": "module",
"scripts": {
  "start": "src/bin/www.js"
}
 

Но я не мог выполнить это так:

 pm2 start ./src/bin/www.js
 

Я проверил pm2.log. Он показал, что «было слишком много нестабильных перезапусков(16)».

Затем запустил его с pm2-dev:

 pm2-dev start ./src/bin/www.js
 

Сообщил об ошибке:

 Error [ERR_REQUIRE_ESM]: Must use import to load ES Module:
 

Pm2 не может хорошо работать с импортом/экспортом? Версия узла-14.16.0.

Ответ №1:

Сначала убедитесь, что у вас есть следующие два пункта:

  1. Версия узла >= 14. Он работает только с последней версией node.
  2. Убедитесь, что ваш package.json содержит строку «тип»: «модуль», без этой строки узел предполагает, что вы хотите использовать обычные модули JS, а не ESM.

Если и то и другое верно, и это все еще не работает, то вы можете стать жертвой следующей проблемы с github

https://github.com/Unitech/pm2/issues/4540

А пока вы можете попробовать запустить его с помощью babel!

Комментарии:

1. Это не работает. Версия узла 14.16.0 и «тип»: «модуль». Приложение Express может работать с «запуском запуска npm», но не работает для pm2.

2. @Генри Правда, я считаю, что в github есть эта проблема, в ней тоже есть довольно свежие комментарии github.com/Unitech/pm2/issues/4540

3. Спасибо! ДА. Затем я использую Babel для его успешной сборки и запуска.

4. Хорошо, я отредактирую свой ответ и добавлю к нему ссылку на github! также тот факт, что вы используете babel, является ответом на данный момент