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

EAS构建的APK无法访问Node.js后端问题求助

问题描述

Node.js后端部署在个人服务器上,可从任意网络访问(已用非家庭网络的智能手机测试,能正常连接)。但使用EAS构建的.apk文件测试时无法访问该后端,模拟器测试同样无效,且找不到可用日志排查。怀疑是CORS问题,相关配置如下:

后端CORS配置:

this.express.use(
  cors(
    {
      origin: true,
      credentials: true
    }
  )
);

前端请求配置:

const ApiManager = axios.create({
  baseURL: url, //public endpoint to my personal server
  responseType: 'json',
  withCredentials: true
});

解决思路

  • 先排查基础问题:确认APK内的url是正确的公网地址,未使用localhost/127.0.0.1这类本地地址;检查服务器防火墙/安全组是否放行后端端口,部分运营商会限制非80/443端口的访问,优先尝试用443端口+HTTPS部署后端。
  • 优化CORS配置:将origin: true改为明确的允许来源,比如针对Expo应用可配置origin: ['exp://your-expo-dev-url', 'https://your-app-domain'];若只是临时验证是否为CORS问题,可先尝试origin: '*'(注意带凭证时*不生效,需配合去掉withCredentials测试),同时确保后端响应头正确返回Access-Control-Allow-Credentials: true。
  • 开启调试日志:后端在CORS中间件前添加日志,打印请求的Origin头,确认前端请求的实际来源;前端通过axios拦截器打印请求详情和错误信息:
    ApiManager.interceptors.request.use(config => {
      console.log('请求配置:', config);
      return config;
    });
    ApiManager.interceptors.response.use(res => res, err => {
      console.log('请求错误:', err.response?.data || err.message);
      return Promise.reject(err);
    });
    
    用adb logcat *:S ReactNative:V ReactNativeJS:V过滤查看APK的日志输出。
  • 检查HTTPS相关配置:若后端用HTTP,高版本Android会默认阻止明文请求,需在AndroidManifest.xml中添加android:usesCleartextTraffic="true";或直接给后端配置免费HTTPS证书(如Let's Encrypt)。
  • 验证网络连通性:在测试手机上用Postman/curl直接请求后端地址,确认能正常访问;若用域名访问,检查手机端DNS解析是否正常,可临时替换为服务器IP测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:11