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

Node.js中不添加.js扩展名无法导入模块该如何解决?

报错原因

你遇到的ERR_MODULE_NOT_FOUND报错是因为你开启了Node.js的ES模块规范(即项目package.json中配置了"type": "module"),ESM标准要求相对路径导入自定义模块时必须补全文件扩展名,不支持CommonJS规范下的自动补全.js后缀的逻辑。

解决方案

方案1:补全导入语句扩展名(推荐)

直接修改对应的导入语句,补全.js后缀即可,符合ESM官方标准,无兼容风险:
将原来的代码:

import userController from '../controllers/user.controller';

修改为:

import userController from '../controllers/user.controller.js';

项目内所有相对路径导入的自定义.js/.json/.node文件,都需要按这个规则补全对应扩展名。

方案2:开启实验性自动解析后缀

如果不想批量修改现有导入语句,可以通过Node启动参数开启扩展名自动补全能力:

  • 启动Node服务时追加--experimental-specifier-resolution=node参数,如果你用nodemon启动,可将package.json中的scripts配置调整为:
    "scripts": {
      "start": "nodemon --experimental-specifier-resolution=node src/index.js"
    }
    

注意:该参数属于Node.js实验性特性,生产环境使用前需要确认对应Node版本的兼容性,长期来看更推荐使用方案1适配标准规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:57:03