#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:
Сначала убедитесь, что у вас есть следующие два пункта:
- Версия узла >= 14. Он работает только с последней версией node.
- Убедитесь, что ваш 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, является ответом на данный момент