我正在尝试使用托管在云中的Code Server开发React Native应用程序。
是否可以使用自定义域名运行expo,以便我可以使用移动终端访问链接?默认情况下,expo正在等待exp://10.0.0.186:19000,无法通过Internet访问。
我可以使用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.
1条答案
按热度按时间f45qwnt81#
--tunnel
选项通常可以正常工作,假设您也已经根据Expo安装隧道文档全局安装了@expo/ngrok
软件包。自定义域名-问题
不幸的是,在撰写本文时,
@expo/cli
还没有提供使用自定义域的直接方法。它们确实提供了一种使用子域的方法(参见下面的解决方案)自定义域名-解决方案
然而,如果你和我一样,对这个答案不满意,你可以自己动手:
1.获得一个ngrok帐户并设置您的自定义域(这将需要购买个人计划或更高版本)
1.修补
@expo/cli
以使用您的自定义域。根据您的包管理器,您可以使用类似pnpm patch或patch-package的东西来创建补丁文件,并确保每次安装节点模块时都会更新它。
对于
@expo/cli
版本0.7.3,您要修改的文件位于node_modules/@expo/cli/build/src/start/server/AsyncNgrok.js中,其中包含以下内容:更改它以覆盖hostname和authToken,并删除urlProps的扩展:
我建议使用一个环境变量,而不是直接在补丁文件中,它将提交到您的存储库。
保存文件,然后创建并应用修补程序文件。您应该可以正常使用
expo start --tunnel
命令来配置自定义的ngrok域。子域名
不是OP问题的有效答案,但如果您不想为上述解决方案购买域和ngrok订阅,您可以使用子域和
EXPO_TUNNEL_SUBDOMAIN
环境变量,请参阅Expo环境变量文档EXPO_TUNNEL_SUBDOMAIN -禁用使用exp.direct作为--tunnel连接的主机名。这将启用https://转发,可用于测试iOS上的通用链接。这可能会导致Expo链接和Expo Go出现意外问题。通过传递一个字符串值来选择要使用的确切子域,该字符串值不属于:true,false,1,0.
它可以很容易地添加到您的.env文件或package.json启动脚本中,例如: