Heroku部署Node.js后端遇404错误求助
Next.js+Node.js部署Heroku出现404错误的解决方法
问题根源
你的server.js中定义了根路径/的处理路由,但没有把创建好的router挂载到Express应用实例上,导致访问Heroku应用根路径时,Express找不到对应路由处理逻辑,返回404错误。
看你代码里的关键问题点:
const router = express.Router(); router.get("/", (req, res) => { res.send("Server is up!"); }); module.exports = router; // 导出了router但当前文件未使用它 // 后续代码里没有将router挂载到app的操作
修复步骤
- 删除多余的
module.exports = router;语句(你不需要在其他文件导入这个router,当前文件直接使用即可) - 在
app.listen代码之前,添加挂载根路由的代码:
app.use("/", router);
修改后的server.js核心部分示例:
const jwt = require("jsonwebtoken"); const express = require("express"); const app = express(); const PORTS = process.env.PORT || 8080; const cors = require("cors"); const router = express.Router(); router.get("/", (req, res) => { res.send("Server is up!"); }); // 移除module.exports = router; const sign = require("./apis/sign"); const upload = require("./apis/upload"); const KEY = "asfasfgasghhgewgwedsgawsdg"; app.use(cors()); app.use(express.json()); app.use("/sign", sign); app.use("/upload", upload); // 挂载根路由 app.use("/", router); app.listen(PORTS, () => { console.log("Server started on port:", PORTS); });
验证
重新部署修改后的代码到Heroku,访问应用根路径(https://pet-finder-1-6e4ec11ea0c6.herokuapp.com/),应该会返回"Server is up!",说明根路由已正常工作。
同时检查前端请求的/sign、/upload等接口路径是否正确,只要./apis/sign和./apis/upload中的路由逻辑无误,这些接口也能正常响应。
内容的提问来源于stack exchange,提问作者Moeez Ramay
相关产品推荐
相关产品推荐

