能否仅将React Native应用的服务端单独部署到Heroku平台?
方案解答
你完全可以仅将Server目录下的Node.js+Express后端单独部署到Heroku,无需上传前端部分,后续前端直接将请求地址替换为Heroku分配的域名即可,搭配Heroku上托管的SQL数据库可正常运行,以下是适配移动应用场景的纯后端部署操作方案:
部署前配置校验
- 不要将整个Root根目录提交部署,仅把Server文件夹作为独立的部署根目录,避免Heroku识别不到后端启动文件
- 确认Server目录下的
package.json符合要求:- 所有后端依赖都已写入
dependencies字段,不要仅存在于devDependencies scripts字段下必须包含start启动命令,示例:"start": "node index.js",Heroku默认执行该命令启动服务
- 所有后端依赖都已写入
- 服务端口不要写死固定值,需通过
process.env.PORT读取Heroku分配的动态端口,示例代码:
const PORT = process.env.PORT || 3000; app.listen(PORT, () => console.log(`服务已启动,端口:${PORT}`));
- 数据库连接配置不要写死本地账号地址,需通过
process.env读取Heroku提供的数据库环境变量,后续部署SQL数据库后Heroku会自动生成对应的环境变量参数 - 后端提前配置
cors中间件,避免移动应用请求跨域拦截
部署操作步骤
- 进入本地Server目录,执行
git init初始化独立的Git仓库(如果之前是在Root目录初始化的Git,可拆分Server目录为独立仓库,新手推荐直接复制Server目录到新文件夹初始化仓库) - 在Server目录下新建
.gitignore文件,添加node_modules、本地.env文件等无需上传的内容 - 完成Heroku CLI登录后,执行
heroku create 自定义后端应用名创建Heroku应用 - 依次执行
git add .、git commit -m "提交后端代码"提交所有代码 - 执行
git push heroku main(若本地默认分支为master则替换为git push heroku master)推送代码到Heroku - 推送完成后可执行
heroku logs --tail查看服务启动日志,排查运行异常
常见报错修复
- 启动失败报错:优先检查
start命令是否正确、端口是否配置为动态读取、依赖是否完整写入dependencies - 前端请求报错:确认后端CORS配置已放行移动应用请求来源、Heroku应用已正常启动无运行时异常
- 数据库连接失败:确认Heroku端SQL数据库插件已安装完成、代码中读取的环境变量名与Heroku应用设置页中展示的变量名完全一致
内容的提问来源于stack exchange,提问作者tagger
相关产品推荐
相关产品推荐

