MERN Stack报错:Cannot find module '../models/workoutModel.js'求助
MERN Stack 中 Mongoose 模型导入提示“找不到模块”的解决方案
问题根源
错误核心是文件路径不匹配:
从server/routes/workouts.js中使用../models/workoutModel.js时,Node.js会从server目录下查找models文件夹,但你的models实际在MERN项目根目录(和server同级),而非server内部,因此找不到模块。
文件结构回顾
MERN/ ├── client/ ├── models/ │ └── workoutModel.js └── server/ ├── routes/ │ └── workouts.js ├── server.js ├── node_modules/ └── ...其他后端文件
两种解决方案
方案1:修正导入路径
直接修改server/routes/workouts.js中的导入语句,从当前目录往上走两层到项目根目录,再访问models:
const express = require('express'); const router = express.Router(); // 修正后的路径:../../ 回到MERN根目录 const Workout = require('../../models/workoutModel.js'); // 后续路由代码保持不变...
方案2:调整项目结构(更推荐)
将models文件夹移动到server目录下,让所有后端相关文件统一归类,原导入路径即可生效:
调整后的文件结构:
MERN/ ├── client/ └── server/ ├── models/ │ └── workoutModel.js ├── routes/ │ └── workouts.js ├── server.js └── ...其他后端文件
此时原导入语句const Workout = require('../models/workoutModel.js')无需修改即可正常工作。
额外检查项
- 确认文件名拼写完全一致(注意大小写,比如
workoutModel.js不要写成WorkoutModel.js) - 确认
models文件夹和workoutModel.js确实存在于对应路径下
内容的提问来源于stack exchange,提问作者Miranda Weathers
相关产品推荐
相关产品推荐

