Node.js MODULE_NOT_FOUND错误:本地正常部署平台报错求助
Node.js模块找不到及Vercel部署404问题
错误信息
node:internal/modules/cjs/loader:959 throw err; ^ Error: Cannot find module '../controllers/coursecontrollers' Require stack: - /project/E_Learning_Backend/routes/CourseRoute.js - /project/E_Learning_Backend/app.js - /project/E_Learning_Backend/server.js at Function.Module._resolveFilename (node:internal/modules/cjs/loader:956:15) at Function.Module._load (node:internal/modules/cjs/loader:804:27) at Module.require (node:internal/modules/cjs/loader:1028:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (/project/E_Learning_Backend/routes/CourseRoute.js:2:120) at Module._compile (node:internal/modules/cjs/loader:1126:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10) at Module.load (node:internal/modules/cjs/loader:1004:32) at Function.Module._load (node:internal/modules/cjs/loader:839:12) at Module.require (node:internal/modules/cjs/loader:1028:19) { code: 'MODULE_NOT_FOUND', requireStack: [ '/project/E_Learning_Backend/routes/CourseRoute.js', '/project/E_Learning_Backend/app.js', '/project/E_Learning_Backend/server.js' ] }
问题背景
项目本地运行正常,但上传到CodeSandbox时出现上述模块找不到错误,部署到Vercel时返回404资源未找到错误。
解决办法
1. 修复模块引用大小写问题
CodeSandbox和Vercel使用Linux环境,文件名区分大小写,而本地Windows环境不区分。查看项目文件结构,controllers目录下的实际文件名是CourseControllers.js,但routes/CourseRoute.js里的引用路径写的是../controllers/coursecontrollers(全小写),导致系统找不到文件。
修改CourseRoute.js中的引用代码,改为匹配实际文件名的大小写:
const courseController = require('../controllers/CourseControllers');
2. 解决Vercel部署404问题
除了修复大小写,还需确保Vercel部署配置正确:
- 检查
package.json中的start脚本,确保指向入口文件server.js:"scripts": { "start": "node server.js" } - 在项目根目录创建
vercel.json文件,配置路由规则和构建方式:
这个配置会让所有请求都转发到{ "builds": [ { "src": "server.js", "use": "@vercel/node" } ], "routes": [ { "src": "/(.*)", "dest": "server.js" } ] }server.js处理,避免静态资源路由导致的404。
内容的提问来源于stack exchange,提问作者jainex
相关产品推荐
相关产品推荐

