将MERN栈项目部署至Heroku时出现模块找不到错误
部署报错:找不到模块
/app/backend/server.js 问题详情
配置React应用的post build脚本后,部署时系统提示找不到模块 /app/backend/server.js,相关配置及项目结构如下:
Procfile内容
web: node Backend/server.js
package.json配置
{ "name": "ecommerce", "version": "1.0.0", "description": "", "main": "Backend/server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node backend/server.js", "dev": "nodemon backend/server.js", "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false && npm install --prefix frontend && npm run build --prefix frontend" }, "author": "", "license": "ISC", "dependencies": { "bcryptjs": "^2.4.3", "body-parser": "^1.19.0", "cloudinary": "^1.28.1", "cookie-parser": "^1.4.5", "dotenv": "^10.0.0", "express": "^4.17.1", "express-fileupload": "^1.2.1", "jsonwebtoken": "^8.5.1", "mongoose": "^6.0.10", "nodemailer": "^6.7.0", "nodemon": "^2.0.13", "stripe": "^8.197.0", "validator": "^13.6.0" } }
项目结构
Backend/frontend/Procfilepackage-lock.jsonpackage.json
解决方案
核心问题是路径大小写不匹配:
Heroku的文件系统区分大小写,项目实际目录是大写的Backend/,但package.json的start、dev脚本里写的是小写的backend/server.js,两者不一致导致找不到文件。
修复方式(二选一即可)
- 修改目录名称:把项目中的
Backend/重命名为backend/,保持脚本中的路径不变。 - 修改脚本路径:将package.json里的
start、dev脚本路径改为Backend/server.js,和Procfile、main字段保持一致:"scripts": { "start": "node Backend/server.js", "dev": "nodemon Backend/server.js", // 其他脚本不变 }
修改后重新部署即可解决该问题。
内容的提问来源于stack exchange,提问作者sumitkhatrii
相关产品推荐
相关产品推荐

