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

能否配置Expo通过自定义域名启动供移动设备公网访问?

问题

我目前在云端托管的Code Server环境中开发React Native应用,需要确认是否支持通过自定义域名运行Expo,让移动设备可以通过公网访问服务。
默认状态下Expo监听地址为 exp://10.0.0.186:19000,属于内网地址,无法从公网直接访问。我已知可以通过 expo start --port XXX 命令指定服务端口,但不清楚是否支持自定义域名配置。
此前尝试添加 --tunnel 参数启动服务失败,错误输出如下:

Error starting ngrok: /usr/lib/node_modules/expo-cli/node_modules/xdl/binaries/linux/adb/adb: 1: Syntax error: Unterminated quoted string
Tunnel URL not found (it might not be ready yet), falling back to LAN URL.
解决方案

修复--tunnel模式启动报错

你遇到的ngrok启动失败问题,是Expo CLI内置的adb二进制文件和云端服务器CPU架构不兼容导致的,按以下步骤修复即可:

  • 在云端服务器安装和系统架构匹配的官方adb包,Debian/Ubuntu系统执行 sudo apt update && sudo apt install -y adb,CentOS/RHEL系统执行 sudo dnf install -y android-tools
  • 配置环境变量强制Expo调用系统安装的adb:在当前用户的shell配置文件(~/.bashrc/~/.zshrc,根据你使用的shell选择)中添加 export EXPO_USE_SYSTEM_ADB=1,执行 source 对应配置文件路径 让配置立即生效
  • 重新执行 expo start --tunnel 即可正常启动ngrok隧道,自动生成公网可访问的链接,直接用移动设备扫码就能连接开发服务,不需要额外配置域名。

自定义域名配置方法

如果需要使用自有域名而非Expo自动生成的隧道地址,按以下步骤配置:

  • 先将你的自定义域名A记录解析到云端服务器的公网IP,同时在服务器防火墙、云服务商安全组规则中放开19000、19001、19002三个TCP端口的入站权限,这三个端口分别对应Metro打包服务、调试服务、日志服务
  • 启动Expo时指定监听所有网卡地址,执行命令:expo start --host 0.0.0.0 --port 19000
  • 打开项目根目录下的 app.json 配置文件,在expo配置节点下添加hostUri字段,值为你的自定义域名加19000端口,示例配置如下:
{
  "expo": {
    "name": "your-app-name",
    "slug": "your-app-slug",
    "hostUri": "your-custom-domain.com:19000"
  }
}
  • 保存配置后重启Expo服务,终端生成的访问二维码就会指向你的自定义域名地址,移动设备在可以正常解析该域名的网络环境下,扫码即可连接开发服务。
  • 如果服务前端挂了Nginx、Caddy等反向代理,需要额外开启WebSocket协议转发支持,否则热更新、调试连接会建立失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:24:25