You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署于Heroku的React+Node应用请求返回index.html及405错误求助

问题排查解决思路
  • 优先核对路由定义顺序:你大概率是把前端SPA的/*通配返回index.html的路由写在了API路由定义之前,所有请求优先匹配到通配规则直接返回HTML,完全走不到后端API逻辑。本地开发时前后端跑在不同端口,请求走代理转发所以不会触发这个问题,部署后前后端共享同一端口,问题就会暴露。

修复方案:把所有API接口的路由定义放在SPA通配返回index.html的路由之前,保证接口请求优先匹配到对应的后端逻辑。

  • 检查静态资源重写规则:如果部署时配置了static.json或者nginx重写规则,将所有路径都重写到index.html,会覆盖后端API路由,甚至POST请求也会被改写为GET请求返回HTML,自然会返回405方法不允许错误。

修复方案:在重写规则中添加/api/*前缀的排除规则,示例static.json配置如下:

{
  "rewrites": [
    { "source": "/api/**", "destination": "/api" },
    { "source": "**", "destination": "/index.html" }
  ]
}
  • 确认部署启动的服务类型:检查Heroku部署时启动的是你集成了静态资源服务的Node后端服务,而非纯静态文件服务器(比如仅启动serve build)。如果没有运行Node后端进程,根本没有逻辑处理API请求,自然非GET请求会报405,GET请求全返回静态HTML。

修复方案:查看package.json中的scripts.start配置,确认启动命令是运行你的Node入口文件(比如node server.js),而非纯静态服务启动命令。

  • 核对接口请求路径前缀:本地开发时的代理配置可能自动给接口添加了/api前缀,部署后未配置对应转发规则,导致接口请求路径不匹配。确认所有前端发起的接口请求路径,和后端定义的接口路径前缀完全一致。

内容的提问来源于stack exchange,提问作者Matt Gitto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:06:03