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

如何连接React应用与Node.js后端并部署到Heroku平台?

步骤1:修改前端API请求配置

将前端axios请求中的固定域名删除,改为相对路径,同时检查请求路径与后端路由规则是否匹配:

// 修改前
axios({ method: "POST", url: "http://localhost:3000/api/v1/user/register", data: data, headers: header });
// 修改后(注意后端路由前缀为/api/v1/users,需确保路径拼写一致)
axios({ method: "POST", url: "/api/v1/users/register", data: data, headers: header });
步骤2:配置Express服务前端静态资源

首先在后端App.js头部引入path模块:

const path = require("path");

再将CORS配置调整为仅开发环境启用(生产环境前后端同域无需跨域配置):

if (process.env.NODE_ENV !== "production") {
  app.use(cors());
}

最后在所有API路由定义的末尾添加生产环境静态资源服务逻辑,适配前端路由:

if (process.env.NODE_ENV === "production") {
  // 托管React build生成的静态文件
  app.use(express.static(path.join(__dirname, "client", "build")));
  // 所有非API请求返回React入口文件,解决前端路由刷新404问题
  app.get("*", (req, res) => {
    res.sendFile(path.join(__dirname, "client", "build", "index.html"));
  });
}
步骤3:配置端口监听逻辑

确保后端启动文件(如server.js、App.js)的监听端口使用Heroku分配的动态端口,不要写死固定值:

const PORT = process.env.PORT || 5000; // 本地开发默认用5000端口,部署时自动读取Heroku的环境变量
app.listen(PORT, () => console.log(`服务运行在端口${PORT}`));
步骤4:配置根目录package.json

在项目根目录的package.json中添加引擎版本声明、启动脚本与Heroku构建钩子:

{
  // 声明Node与npm版本,和本地开发环境保持一致即可,可通过node -v、npm -v查询本地版本
  "engines": {
    "node": "16.x",
    "npm": "8.x"
  },
  "scripts": {
    "start": "node server.js", // 替换为你的后端启动文件实际路径
    "heroku-postbuild": "cd client && npm install && npm run build" // Heroku部署时自动构建前端
  }
}
步骤5:配置Heroku环境变量

将本地.env文件中所有用到的环境变量(如数据库连接地址、JWT密钥等),在Heroku后台对应项目的「Settings → Config Vars」页面逐一添加,不要将.env文件提交到Git仓库。

完成以上配置后将代码推送到Heroku即可完成自动构建部署,部署完成后可直接访问Heroku分配的域名测试功能。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:04