#node.js #pm2
#node.js #pm2
Вопрос:
Я включил модули ES в pacakage.json
с этой парой ключ-значение "type": "module"
, мне не нужно использовать флаг ‘experimental’ с последней версией node
при запуске pm2 start app.js --watch
приложение выходит из строя с сообщением об ошибке
0|app | Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader
0|app | at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:781:11)
0|app | at Loader.resolve (internal/modules/esm/loader.js:85:40)
0|app | at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)
0|app | at Loader.import (internal/modules/esm/loader.js:164:28)
0|app | at importModuleDynamically (internal/modules/cjs/loader.js:1194:27)
0|app | at exports.importModuleDynamicallyCallback (internal/process/esm_loader.js:30:14)
0|app | at Object.<anonymous> (C:UsersusernameAppDataRoamingnpmnode_modulespm2libProcessContainerFork.js:29:24)
0|app | at Module._compile (internal/modules/cjs/loader.js:1251:30)
0|app | at Object.Module._extensions..js (internal/modules/cjs/loader.js:1272:10)
0|app | at Module.load (internal/modules/cjs/loader.js:1100:32) {
0|app | code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
0|app | }
приложение отлично работает без pm2. я предполагаю, что pm2 пока не поддерживает ESM!
какие-либо обходные пути или я пропускаю некоторые конфигурации?
Комментарии:
1. Это может быть связано с тем, как вы импортируете файл js в другой файл. Используете ли вы абсолютный путь?
2. @ChickenSoups не работает как импорт модулей ядра nodejs (относительный путь), так и абсолютные пути к скриптам
Ответ №1:
Попробуйте передать harmony в качестве аргументов узла, поскольку это включит функции es6 в процессе pm2.
pm2 start my_app.js --watch --node-args="--harmony"
Ответ №2:
Если вы используете Windows 10
pm2 не работает с esm в Windows 10, обходных путей нет!
Комментарии:
1. ссылка github.com/Unitech/pm2/issues/4819