nodejs에서 ES 모듈을 사용하는 동안 PM2가 충돌합니다.

Aug 18 2020

pacakage.json이 키 값 쌍으로 ES 모듈을 활성화 "type": "module"했습니다. 최신 버전의 노드에서 '실험적'플래그를 사용할 필요가 없습니다.

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:\Users\username\AppData\Roaming\npm\node_modules\pm2\lib\ProcessContainerFork.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 r7r Aug 28 2020 at 19:36

Windows 10을 사용하는 경우

pm2가 Windows 10에서 esm과 함께 작동하지 않는 경우 해결 방법이 없습니다!

Dipten Aug 27 2020 at 20:03

pm2 프로세스에서 es6 기능을 활성화하므로 조화를 노드 인수로 전달하십시오.

pm2 start my_app.js --watch --node-args="--harmony"