PM2 se bloque lors de l'utilisation de modules ES dans nodejs

Aug 18 2020

J'ai activé les modules ES pacakage.jsonavec cette paire clé-valeur, "type": "module"je n'ai pas besoin d'utiliser le drapeau "expérimental" avec la dernière version de node

quand je lance pm2 start app.js --watchl'application se bloque avec le message d'erreur

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    | }

l'application fonctionne parfaitement sans pm2. Je suppose que pm2 ne prend pas encore en charge ESM !

des solutions de contournement ou me manque-t-il certaines configurations?

Réponses

1 r7r Aug 28 2020 at 19:36

Si vous êtes sur windows 10

pm2 ne fonctionne pas avec esm sur Windows 10, il n'y a pas de solution !

Dipten Aug 27 2020 at 20:03

Essayez de passer l'harmonie en tant qu'arguments de nœud car cela activera les fonctionnalités es6 dans le processus pm2.

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