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

使用create-react-app部署到Heroku时出现Invalid Host Header错误

问题根源

你遇到的Invalid Host Header错误是Create React App生产构建内置的主机头校验机制触发导致的。你之前尝试的setupProxy.js、.env.development配置均仅对本地开发环境生效,部署到Heroku的生产环境不会读取这些配置,因此没有效果。重安装依赖后默认重置了CRA的相关默认规则,所以之前正常的项目出现了该问题。

修复方案

1. 关闭生产环境主机头校验

在前端项目(client目录,与package.json同级)新增.env.production文件,写入以下配置:

DANGEROUSLY_DISABLE_HOST_CHECK=true

该配置仅对生产环境生效,可直接绕过主机头校验逻辑,适配Heroku的部署域名规则。

2. 补全服务端静态资源托管逻辑

你当前的server/index.js仅配置了接口路由,缺失CRA构建后静态资源的托管逻辑,需要补充对应代码:
首先安装path依赖(已安装可跳过):
npm i path

然后修改server/index.js,在现有代码基础上添加以下内容:

const path = require('path');

// 所有路由定义的末尾添加这段代码
if (process.env.NODE_ENV === 'production') {
  // 托管前端构建后的静态资源
  app.use(express.static(path.join(__dirname, '../client/build')));
  // 适配前端路由,所有未匹配接口的请求都返回前端入口文件
  app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, '../client/build', 'index.html'));
  });
}

如果你的项目目录结构和默认结构不同,调整path.join中的路径匹配你的实际build文件位置即可。

3. 确认构建脚本配置

检查项目根目录的package.json中是否配置了正确的生产构建脚本,确保Heroku部署时可以自动构建前端资源:

{
  "scripts": {
    "build": "cd client && npm install && npm run build",
    "start": "node server/index.js"
  }
}

4. 重新部署

提交修改后的代码到Heroku,部署完成后即可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:05