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

React Native生产环境如何配置API对接AWS MySQL数据库

Expo+React Native 开发转生产环境配置指南

一、Axios 多环境baseURL配置(替换硬编码地址)

不要在业务代码里写死IP和端口,通过环境变量自动区分开发/生产环境,步骤如下:

  • 项目根目录新建两个环境配置文件:
    • 开发环境:.env.development,写入API_BASE_URL=http://你本地调试的机器IP:19056
    • 生产环境:.env.production,写入API_BASE_URL=https://你的生产服务域名(生产环境不要直接用裸IP+端口,必须配置HTTPS域名)
  • 安装环境变量读取依赖:执行命令npx expo install react-native-dotenv
  • 修改根目录下babel.config.js配置,让构建时自动匹配对应环境的变量:
module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      ['module:react-native-dotenv', {
        moduleName: '@env',
        path: process.env.NODE_ENV === 'production' ? '.env.production' : '.env.development',
        allowUndefined: false
      }]
    ]
  };
};
  • 封装统一的Axios请求实例,全局配置baseURL,后续所有接口直接写路径即可:
import axios from 'axios';
import { API_BASE_URL } from '@env';

const request = axios.create({
  baseURL: API_BASE_URL,
  timeout: 10000
});

// 原请求代码修改为如下写法,不需要再写全域名/IP+端口
// request.post("/location", body).then(response => console.log(response)).catch(err => console.log(err))

注意:你示例代码里的请求地址http://53.183.245.150/:19056/location存在格式错误,端口前多了一个斜杠,正确格式为http://IP:端口/接口路径


二、Express服务端生产环境修正

你当前的服务端代码仅适配本地开发场景,上线前需要做以下调整:

  • 数据库连接配置优化
    • 禁止使用root账号连接生产MySQL,单独新建一个仅拥有业务所需库表权限的账号,设置强密码,删除空密码配置
    • 如果Node服务和现有PHP网站、MySQL部署在同一个AWS VPC内,host字段填写MySQL内网地址(同机部署填127.0.0.1,RDS填内网端点),不要用公网IP连接数据库,同时AWS安全组要禁止3306端口对公网开放
    • 共用现有生产MySQL是完全可行的,只要保证新账号有对应业务表(users、trips等)的读写权限即可,注意SQL逻辑不要和现有PHP业务冲突,避免影响线上网站运行
  • CORS配置收紧
    不要用默认的全放开app.use(cors())配置,生产环境仅放行信任的来源:
const allowedOrigins = process.env.NODE_ENV === 'production' 
  ? ['https://你的线上网站域名'] // 后续如果加移动端应用白名单再补充对应值
  : ['*'];
app.use(cors({
  origin: (origin, callback) => {
    if (allowedOrigins.includes(origin) || !origin) return callback(null, true);
    callback(new Error('CORS policy: Origin not allowed'));
  }
}));
  • 端口配置
    你现有代码里const PORT = process.env.PORT || 19056的写法已经适配多环境,生产部署时通过系统环境变量传入端口即可,建议用Nginx做反向代理,把Node服务监听在本地端口,对外仅开放80(HTTP)/443(HTTPS)端口,不要把19056业务端口直接暴露在公网。
  • 接口逻辑优化
    现有登录接口无论查询成功、账号密码错误还是服务报错都直接返回rows,建议补充标准HTTP状态码:账号密码错误返回401,服务异常返回500,方便前端做统一异常处理。

三、生产部署注意事项

  • 所有公网接口必须配置HTTPS,禁止HTTP明文传输,尤其是登录类涉及用户敏感信息的接口,SSL证书在Nginx层配置即可,请求转发到本地Node服务走HTTP不影响使用
  • 执行Expo生产构建(eas build打安卓/ios安装包)时,构建流程会自动读取.env.production里的baseURL配置,不需要手动修改代码切换环境
  • 上线前先做接口连通性测试,确认移动端能正常通过HTTPS域名访问到Node服务,且Node服务能正常读写AWS上的MySQL数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 17:01:27