配置type:module后导入router提示ERR_MODULE_NOT_FOUND错误如何解决?
错误原因及修复方案
该报错符合Node.js ESM模块规范的限制,和你配置的"type":"module"规则不匹配,按以下步骤修改即可解决:
- 补全相对导入的文件扩展名
Node.js ESM规范不支持自动补全相对路径的文件后缀,你在根目录index.js中导入router的语句缺少.js后缀,修改如下:
// 原错误写法 import { router } from './router/index' // 修改后正确写法 import { router } from './router/index.js'
- 统一使用ESM语法,不要混用CommonJS的
require语法
你的router/index.js中同时使用了require和ESM的import/export,项目配置"type":"module"后不支持require写法,修改express的导入语句:
// 原错误写法 const express = require('express') // 修改后正确写法 import express from 'express'
- (可选检查)其他相对导入路径同步补全后缀
比如router/index.js中导入userController的语句也要补全.js后缀,避免后续再出现同类报错:
import userController from '../controllers/user-controller.js'
修改完成后重启服务即可正常运行。
内容的提问来源于stack exchange,提问作者CyberGenius
相关产品推荐
相关产品推荐

