Node.js ERR_MODULE_NOT_FOUND错误:无法导入指定notes控制器模块
解决Node.js ERR_MODULE_NOT_FOUND 模块找不到问题
错误场景
错误 [ERR_MODULE_NOT_FOUND]:无法找到从C:\My Work\mern-notes-app\server\routes\notes.js导入的模块'C:\My Work\mern-notes-app\server\controllers\notes'
routes/notes.js 代码
import express from "express"; const router = express.Router() import {getNotes} from '../controllers/notes';
controllers/notes 文件内容
export const getNotes = (req , res) => { res.send("Get all notes") }
完整错误堆栈
错误 [ERR_MODULE_NOT_FOUND]:无法找到从C:\My Work\mern-notes-app\server\routes\notes.js导入的模块'C:\My Work\mern-notes-app\server\controllers\notes' at new NodeError (node:internal/errors:406:5) at finalizeResolution (node:internal/modules/esm/resolve:233:11) at moduleResolve (node:internal/modules/esm/resolve:845:10) at defaultResolve (node:internal/modules/esm/resolve:1043:11) at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12) at ModuleLoader.resolve (node:internal/modules/esm/loader:352:25) at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:228:38) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39) at link (node:internal/modules/esm/module_job:84:36) { url: 'file:///C:/My%20Work/mern-notes-app/server/controllers/notes', code: 'ERR_MODULE_NOT_FOUND' }
解决方案
- 添加文件后缀名:Node.js ES模块(ESM)要求导入时必须指定完整后缀,将导入语句修改为:
import {getNotes} from '../controllers/notes.js'; - 确认文件存在性:检查
server/controllers目录下是否存在notes.js文件,注意文件名大小写(即使Windows系统不区分大小写,ESM模式下可能严格匹配)。 - 验证ESM配置:确保项目根目录的
package.json中包含"type": "module"字段,否则Node.js会以CommonJS模式解析,导致ESM语法不兼容。
内容的提问来源于stack exchange,提问作者Soufiane Fathaoui
相关产品推荐
相关产品推荐

