【问题标题】:PM2 crashes while using ES modules in nodejs在 nodejs 中使用 ES 模块时 PM2 崩溃
【发布时间】:2020-08-18 03:11:59
【问题描述】:

我已经在 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!

任何解决方法还是我缺少一些配置?

【问题讨论】:

  • 这可能与您将js文件导入另一个文件的方式有关。你使用绝对路径吗?
  • @ChickenSoups 导入 nodejs 核心模块(相对路径)和脚本的绝对路径都不起作用

标签: node.js pm2


【解决方案1】:

尝试将和声作为节点参数传递,因为它会在 pm2 进程中启用 es6 功能。

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

【讨论】:

    【解决方案2】:

    如果您使用的是 Windows 10

    pm2 在 Windows 10 上无法与 esm 一起使用,没有解决方法!

    【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2013-01-16
    • 2023-02-14
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多