外部网络上的Host Expo应用程序?

时间:2018-03-06 07:42:37

标签: react-native deployment expo create-react-native-app

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

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

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

密码安全性是理想的,但如果这是唯一的选择,那么保密就可以了。分别属于网络安全的Ofc答案。

1 个答案:

答案 0 :(得分:4)

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

对于内部测试,您可以使用exp start --no-dev --minify --offline --non-interactive启动服务器。

  • --no-dev--minify告诉服务器提供缩小的生产包而不是dev bundle。
  • --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打开该应用。