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

Node.js使用ES6 Modules导入模块报错ERR_MODULE_NOT_FOUND如何解决

错误原因

该错误由Node.js ES模块(ESM)的原生规范限制导致:

  • CommonJS模块的require语法默认支持省略.js等本地文件后缀,Node会自动尝试补全后缀匹配对应文件;但ES6标准的import语法强制要求明确声明导入本地文件的完整后缀,不会自动补全.js后缀。
  • 你的导入语句import { connectMongoDB } from "./config/db"未携带.js后缀,ESM解析器无法匹配到db.js文件,因此抛出模块未找到错误。

解决方法

可根据项目需求任选以下一种方案:

方案1:补全导入路径后缀(推荐)

直接修改server.js中的导入语句,补充.js后缀即可:

import { connectMongoDB } from "./config/db.js";
connectMongoDB();

该方案完全符合ES模块标准,无兼容风险。

方案2:调整ESM解析规则

如果希望保留省略后缀的写法,首先确认你已在项目package.json中添加"type": "module"开启ESM支持,再新增experimentalSpecifierResolution配置:

{
  "type": "module",
  "experimentalSpecifierResolution": "node"
}

该配置会让Node的ESM解析器复用CommonJS的路径匹配规则,支持省略.js后缀导入本地文件,仅兼容Node 14.13及以上版本。

方案3:沿用CommonJS规范

如果项目无ESM专属特性需求,将所有import/export语法替换为require/module.exports的CommonJS写法即可正常运行,这也是你之前测试有效的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:36:08