在外部网络上托管Expo应用程序?

ent*_*ity 2 deployment react-native expo create-react-native-app

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

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

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

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

fso*_*son 6

可以通过这种方式运行开发服务器。您可能要使用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> }
Run Code Online (Sandbox Code Playgroud)

您可以通过在app.json文件中添加此端口来设置Metro端口:

{"expo": {"packagerOpts": { "port": <Metro port> }}}
Run Code Online (Sandbox Code Playgroud)

使用代理

如果要在服务器前运行代理(例如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"
Run Code Online (Sandbox Code Playgroud)

然后,Expo Client可以从打开应用程序exp://your-public-url-for-xdl.example.com:443