在外部网络上托管 Expo 应用程序?
Host Expo app on external network?
我正在为一家公司编写一个带有 create-react-native-app
(CRNA) 的应用程序。最终,它可能会投入生产,但出于研究原因,我需要一个可以轻松部署到同事手机上的工作原型(Android 和 iOS)。
由于智力 属性,我不允许在任何外部托管平台(Google Play、App Store、Expo-hosted 等)上发布。但是我确实可以访问可以在公司内部网之外进行通信的内部服务器。
鉴于此,我想知道是否有可能 运行 由 npm start
生成的本地 Expo 服务器以接受外部连接的方式(即通过端口转发、代理、或 VPN)。
密码安全是理想的选择,但如果这是唯一的选择,那么保密也行。 Ofc 将属于相应答案的网络安全。
可以通过这种方式 运行 开发服务器。您可能希望使用 Expo CLI 来启动服务器,因为它允许调整更多选项(它无论如何都会启动与 CRNA 相同的 XDL 服务器)。
对于您的内部测试,您可以使用 exp start --no-dev --minify --offline --non-interactive
启动服务器。
--no-dev
和 --minify
告诉服务器提供缩小的生产包而不是开发包。
--offline
允许服务器 运行 无需使用 Expo 帐户登录(如果您 运行 在服务器上使用此功能很有用)
--non-interactive
使命令失败,如果它需要输入。
您需要在服务器上有两个可公开访问的端口:一个用于 XDL 服务器,另一个用于 Metro 捆绑器。您可以通过在项目目录中创建一个包含以下内容的 .exprc
文件来设置 XDL 端口:
{ "manifestPort": <XDL server port> }
您可以通过在 app.json
文件中添加以下内容来设置 Metro 端口:
{"expo": {"packagerOpts": { "port": <Metro port> }}}
使用代理
如果你想运行服务器前面的代理(如NGINX)来控制对它的访问或启用HTTPS,你可以使用这些环境变量告诉exp
关于您的代理的可公开访问 URL:
export EXPO_MANIFEST_PROXY_URL="https://your-public-url-for-xdl.example.com"
export EXPO_PACKAGER_PROXY_URL="https://your-public-url-for-metro.example.com"
Expo Client 然后可以从 exp://your-public-url-for-xdl.example.com:443
打开应用程序。
我正在为一家公司编写一个带有 create-react-native-app
(CRNA) 的应用程序。最终,它可能会投入生产,但出于研究原因,我需要一个可以轻松部署到同事手机上的工作原型(Android 和 iOS)。
由于智力 属性,我不允许在任何外部托管平台(Google Play、App Store、Expo-hosted 等)上发布。但是我确实可以访问可以在公司内部网之外进行通信的内部服务器。
鉴于此,我想知道是否有可能 运行 由 npm start
生成的本地 Expo 服务器以接受外部连接的方式(即通过端口转发、代理、或 VPN)。
密码安全是理想的选择,但如果这是唯一的选择,那么保密也行。 Ofc 将属于相应答案的网络安全。
可以通过这种方式 运行 开发服务器。您可能希望使用 Expo CLI 来启动服务器,因为它允许调整更多选项(它无论如何都会启动与 CRNA 相同的 XDL 服务器)。
对于您的内部测试,您可以使用 exp start --no-dev --minify --offline --non-interactive
启动服务器。
--no-dev
和--minify
告诉服务器提供缩小的生产包而不是开发包。--offline
允许服务器 运行 无需使用 Expo 帐户登录(如果您 运行 在服务器上使用此功能很有用)--non-interactive
使命令失败,如果它需要输入。
您需要在服务器上有两个可公开访问的端口:一个用于 XDL 服务器,另一个用于 Metro 捆绑器。您可以通过在项目目录中创建一个包含以下内容的 .exprc
文件来设置 XDL 端口:
{ "manifestPort": <XDL server port> }
您可以通过在 app.json
文件中添加以下内容来设置 Metro 端口:
{"expo": {"packagerOpts": { "port": <Metro port> }}}
使用代理
如果你想运行服务器前面的代理(如NGINX)来控制对它的访问或启用HTTPS,你可以使用这些环境变量告诉exp
关于您的代理的可公开访问 URL:
export EXPO_MANIFEST_PROXY_URL="https://your-public-url-for-xdl.example.com"
export EXPO_PACKAGER_PROXY_URL="https://your-public-url-for-metro.example.com"
Expo Client 然后可以从 exp://your-public-url-for-xdl.example.com:443
打开应用程序。