4

我正在create-react-native-app为一家公司编写一个带有(CRNA)的应用程序。最终,它可能会投入生产,但出于研究原因,我需要一个可以轻松部署到同事手机(Android 和 iOS)的工作原型。

由于知识产权,我不得在任何外部托管平台(Google Play、App Store、Expo-hosted 等)上发布。但是,我确实可以访问可以在公司 Intranet 外部进行通信的内部服务器。

鉴于此,我想知道是否有可能以npm start接受外部连接(即通过端口转发、代理或 VPN)的方式运行生成的本地 Expo 服务器。

密码安全将是理想的,但如果这是唯一的选择,只是保密就可以了。Ofc 这将属于与答案相关的网络安全。

4

1 回答 1

9

以这种方式运行开发服务器是可能的。您可能希望使用Expo CLI来启动服务器,因为它允许调整更多选项(它无论如何都会启动与 CRNA 相同的 XDL 服务器)。

对于您的内部测试,您可以使用exp start --no-dev --minify --offline --non-interactive.

  • --no-dev--minify告诉服务器提供一个缩小的生产包而不是开发包。
  • --offline允许服务器在不使用 Expo 帐户登录的情况下运行(如果您在服务器上运行它很有用)
  • --non-interactive如果需要输入,则使命令失败。

您需要在服务器上有两个可公开访问的端口:一个用于 XDL 服务器,另一个用于 Metro bundler。.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.

于 2018-03-07T15:27:19.647 回答