Would be nice to run expo web on port 80 on my web server
It’s generally not a good idea to allow the general Internet to access a development server, so I would be hesitant to run
expo start --web on port 80 on a publicly available Web server.
Could you elaborate on why you would like to do this?
Was tossing up this site for fun
It’s serving our
expo build:web from a node server which is also our API server
Thought it would’ve been a faster workflow for our project for me to “test in prod” our expo web as I was working on it. Essentially if going to that site was serving the hot-reloading webpack devserver. Both for me and also for friends, as I could give them a link to this collaborative/realtime project and hot reload it as they use it.
(The alternative is me developing on my laptop, running expo build:web, copying it to the backend, restarting our backend, making sure people refresh the website)
Wound up using
sudo socat tcp-listen:80,reuseaddr,fork tcp:localhost:19006 to proxy requests to the dev server. I couldn’t get the webpack devserver proxy to send things to the node API though. I think it might’ve been that I was using the full host (with port) instead of just the hostname (no port) to connect to the websocket API, but the code’s changed since then so not sure
Well, I see that
packages/xdl/src/Webpack.ts in the
expo-cli source code contains the following line:
export const DEFAULT_PORT = getenv.int('WEB_PORT', 19006);
so I would guess that setting the
WEB_PORT environment variable to
80 might work. However you’d need to run
expo start --web as root in order to be able to bind to a low port.
I think it might be best to have some sort of automated way to deploy/restart and maybe something based on
setInterval() to check for updates and call
location.reload() if necessary? Or display a “Reload” button.
Yes - using something like this overrides the port for web successfully
WEB_PORT=9000 expo start:web --https