You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PM2配合ES模块启动报错ERR_REQUIRE_ESM如何解决?

问题解决方法

错误原因

当你在package.json中配置"type": "module"后,Node.js v12+ 会默认将项目目录下所有.js后缀文件识别为ES模块,你的ecosystem.config.js使用CommonJS规范的module.exports导出,pm2加载时会按照ES模块规则解析该文件,语法不兼容因此抛出ERR_REQUIRE_ESM错误。

可直接落地的解决方案

  • 方案1:重命名pm2配置文件后缀(最稳妥,无兼容问题)
    把ecosystem.config.js改名为ecosystem.config.cjs,明确告诉Node.js这个文件是CommonJS规范。修改后同步调整package.json里的devStart脚本,把pm2启动命令改成 pm2 start ecosystem.config.cjs即可。
  • 方案2:把pm2配置文件改成ES模块规范
    将ecosystem.config.js里的module.exports = { ... }替换为ES模块导出语法,原有配置内容不需要改动:
    export default {
      // 原有配置项保持不变
    }
    
    你当前使用的pm2 5.1.2版本已支持ES模块格式的配置文件,该方案可正常生效。
  • 方案3:启动时指定文件解析规则
    给pm2启动命令添加node参数强制解析规则,修改后的启动命令如下:
    node --experimental-specifier-resolution=node --no-warnings $(which pm2) start ecosystem.config.js
    该方案依赖node实验特性,稳定性低于前两种,仅做备选。

内容的提问来源于stack exchange,提问作者Sha'an

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:45:04