Node.js部署Heroku遇404错误:本地正常线上无法GET /
解决Heroku部署Express应用出现404错误的方案
1. 修复路由与文件路径错误
你的server.js存在两处关键问题:
- 路由路径多了末尾斜杠,导致根路径
/无法匹配 sendFile的参数语法错误,path.join的所有路径片段需放在同一个括号内
修改后的路由代码:
// 修正路由路径,移除末尾多余斜杠 app.get('/*', (req, res) => { // 正确拼接文件路径 res.sendFile(path.join(__dirname, 'public', 'index.html')); });
2. 同步静态文件目录路径
如果server.js位于Develop文件夹,而public文件夹在项目根目录(与Develop同级),需修正静态文件托管路径:
// 从Develop目录向上定位到根目录的public文件夹 app.use(express.static(path.join(__dirname, '../public')));
3. 核对启动脚本路径
本地运行node server.js正常,但Heroku依赖package.json的start脚本启动。若server.js在项目根目录,而非Develop文件夹,修改scripts配置:
{ "scripts": { "start": "node server.js" } }
4. 重新部署验证
- 提交所有修改到Git:
git add . && git commit -m "fix routing and path issues" - 重新部署到Heroku:
git push heroku main
额外检查点
- 确认
process.env.PORT已正确使用,Heroku会自动分配端口,无需硬编码 - 检查
.gitignore是否误排除了public目录或server.js,确保核心文件已被Git追踪
内容的提问来源于stack exchange,提问作者shawnbandy
相关产品推荐
相关产品推荐

