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

如何定位修复Error [ERR_REQUIRE_ESM]?NUXT3部署问题求助

解决CPanel部署Nuxt3时的ERR_REQUIRE_ESM错误

这个错误是因为Phusion Passenger默认用CommonJS模式加载启动文件,但Nuxt3构建后的server/index.mjs是ES模块,直接用require()加载会触发兼容问题,给你三个可行的解决办法:

方法一:写一个CommonJS启动包装文件

  • 在主机的compta-node目录下新建start.cjs文件,内容如下:
async function start() {
  await import('./server/index.mjs');
}
start().catch(err => {
  console.error('启动失败:', err);
  process.exit(1);
});
  • 打开CPanel的Setup Node.js App配置页,把启动文件改成start.cjs,保存后重启应用。

方法二:修改Nuxt配置构建兼容代码

  • 本地项目的nuxt.config.ts里添加以下配置,让Nitro输出CommonJS格式的服务器代码:
export default defineNuxtConfig({
  nitro: {
    node: {
      format: 'cjs'
    }
  }
});
  • 重新执行npm run build,把新生成的.output目录内容全量覆盖上传到主机的compta-node,再重启应用。

方法三:开启Passenger的ES模块支持

  • 在主机的compta-node目录下新建或修改package.json,添加一行:
{
  "type": "module"
}
  • 保存后重启应用,Passenger会以ES模块模式加载server/index.mjs(注意:需要主机的Passenger版本≥6.0才能支持)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 04:09:59