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

Node.js(cPanel部署)出现ERR_REQUIRE_ESM错误求助

解决方案:cPanel部署ESM Node.js应用遇ERR_REQUIRE_ESM错误

你判断的问题核心没错——Passenger的node-loader确实在用CommonJS的require()加载你的ESM入口文件。以下是几个无需大规模修改代码的有效解决办法:

方法1:通过package.json配置+自定义启动命令适配ESM

  • 确保package.json中已添加ESM标识:
    "type": "module"
    
  • 在cPanel的Node.js应用管理界面,将启动文件改为自定义命令:node app.js,而非直接填写app.js。这样Passenger会直接调用Node命令启动应用,Node会根据package.json的配置自动识别ESM模块。

方法2:用CommonJS入口文件做过渡桥梁

创建一个名为entry.cjs的文件(.cjs后缀明确告知Node这是CommonJS模块),内容如下:

// 动态加载ESM入口文件
import('./app.js').catch(err => {
  console.error('应用启动失败:', err);
  process.exit(1);
});

随后在cPanel中将启动文件设置为entry.cjs。Passenger用require()加载这个CommonJS文件后,会通过动态import加载你的ESM应用,完全无需修改原有代码。

方法3:更新服务器Passenger版本

低于6.0.12版本的Passenger对ESM支持不完善,可联系主机服务商将Passenger更新至最新稳定版。更新完成后,Passenger会自动识别package.json中的"type": "module"配置,正确加载ESM模块。

内容的提问来源于stack exchange,提问作者Vedran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:45:36