fix(cli, dev-server): add `SYSTEMROOT` for `open` when opening browsers on Windows (#23287)# Why Fixes #23252 # How - `open` has a bug on Windows, where it [uses `process.env.SYSTEMROOT`]
fix(cli, dev-server): add `SYSTEMROOT` for `open` when opening browsers on Windows (#23287)# Why Fixes #23252 # How - `open` has a bug on Windows, where it [uses `process.env.SYSTEMROOT`](https://github.com/sindresorhus/open/blob/main/index.js#L173) instead of [`process.env.SystemRoot`](https://en.wikipedia.org/wiki/Environment_variable#:~:text=The%20%25SystemRoot%25%20variable%20is%20a,including%20the%20drive%20and%20path.) - This causes the executed command to run with `undefined\\...` - There has been no fix yet, and due to `open` being fully ESM now, we probably can't upgrade too > See various issues [#300](https://github.com/sindresorhus/open/issues/300), [#292](https://github.com/sindresorhus/open/issues/292), [#270](https://github.com/sindresorhus/open/issues/270), or [#205](https://github.com/sindresorhus/open/issues/205) This basically sets the missing `SYSTEMROOT` when trying to open a browser on Windows. It's fixed in both `@expo/cli` as well as `@expo/dev-server` (to open the Chrome DevTools). # Test Plan This has to be tested on Windows. - `$ yarn create expo ./test-browser -t tabs@beta` - `$ cd ./test-browser` - `$ yarn start` - Try pressing the following keys: - `j` -> to open the Chrome DevTools, after connecting a device. Should work as expected. - `w` -> to open the browser with Metro web. Should work as expected. # Checklist <!-- Please check the appropriate items below if they apply to your diff. This is required for changes to Expo modules. --> - [ ] Documentation is up to date to reflect these changes (eg: https://docs.expo.dev and README.md). - [ ] Conforms with the [Documentation Writing Style Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md) - [ ] This diff will work correctly for `npx expo prebuild` & EAS Build (eg: updated a module plugin). --------- Co-authored-by: Expo Bot <[email protected]>
show more ...
feat(cli): improve offline support (#22961)# Why Offline support is sometimes needed in parts of other commands besides `start`, this PR introduces an `EXPO_OFFLINE` env var which can be gener
feat(cli): improve offline support (#22961)# Why Offline support is sometimes needed in parts of other commands besides `start`, this PR introduces an `EXPO_OFFLINE` env var which can be generally used to force offline support. <!-- Please describe the motivation for this PR, and link to relevant GitHub issues, forums posts, or feature requests. --> # How - `EXPO_OFFLINE` - Show a better error message when your computer is connected to wifi but there's no signal. - Assert in `npx expo login` and `npx expo register` when `EXPO_OFFLINE` is set. - Fail better when validating versions offline. In the case of running `npx expo` without wifi: ## Before ``` june-16 nexpo Starting project at /Users/evanbacon/Documents/GitHub/lab/june-16 Starting Metro Bundler Unable to reach Expo servers. Falling back to using the cached dependency map (bundledNativeModules.json) from the package "expo" installed in your project. FetchError: request to https://api.expo.dev/v2/versions/latest failed, reason: getaddrinfo ENOTFOUND api.expo.dev FetchError: request to https://api.expo.dev/v2/versions/latest failed, reason: getaddrinfo ENOTFOUND api.expo.dev at ClientRequest.<anonymous> (/Users/evanbacon/Documents/GitHub/expo/node_modules/node-fetch/lib/index.js:1491:11) at ClientRequest.emit (node:events:513:28) at TLSSocket.socketErrorListener (node:_http_client:502:9) at TLSSocket.emit (node:events:513:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) ``` ## After ``` june-16 nexpo Starting project at /Users/evanbacon/Documents/GitHub/lab/june-16 Starting Metro Bundler Unable to reach Expo servers. Falling back to using the cached dependency map (bundledNativeModules.json) from the package "expo" installed in your project. CommandError: Network connection is unreliable. Try again with the environment variable `EXPO_OFFLINE=1` to skip network requests. ``` <!-- How did you build this feature or fix this bug and why? --> # Test Plan - Updated tests and added new tests for things like the register command. --------- Co-authored-by: Expo Bot <[email protected]>