我正在用React Native做一个新项目,我在Windows 10上的WSL上使用Ubuntu。我还在我的智能手机上使用Expo,与expo start --tunnel
处于同一网络中。但一段时间后,我得到了错误:
Cannot connect to Metro.
Try the following to fix the issue:
Ensure that Metro is running and available on the same network
Ensure that your device/emulator is connected to your machine and has USB debugging enabled - run 'adb devices' to see a list of connected devices
If you're on a physical device connected to the same machine, run 'adb reverse tcp:8081 tcp:8081' to forward requests from your device
If your device is on the same Wi-Fi network, set 'Debug server host & port for device' in 'Dev settings' to your machine's IP address and the port of the local dev server - e.g. 10.0.1.1:8081
URL: q3-fmi.anonymous.sistema-mobile-fluxo.exp.direct:80
Error: null at node_modules/metro-runtime/src/modules/vendor/eventemitter3.js:195:15 in emit at node_modules/metro-runtime/src/modules/HMRClient.js:50:6 in _ws.onerror at node_modules/react-native/Libraries/WebSocket/WebSocket.js:271:8 in _eventEmitter.addListener$argument_1 at node_modules/react-native/Libraries/vendor/emitter/_EventEmitter.js:150:10 in EventEmitter#emit
在同一网络中的智能手机上
这几乎可以肯定是核心问题。WSL2不在";同一网络";作为您的智能手机(或任何其他设备(。它位于独立的虚拟网络上,该网络位于Windows主机上的虚拟交换机后面。网络上的其他设备无法在没有额外端口转发的情况下直接连接到WSL2。
你至少有四个选项,我在这个Ask Ubuntu的答案中完整地记录了这些选项。我在这里也记录了其他Stack Overflow问题中的选项,但Ask Ubuntu目前是最新的,包括我个人喜欢使用ssh
进行端口转发。
在我回答过的几乎所有情况下,公认的解决方案都是使用wsl --set-version <distro> 1
转换为WSL1。我还介绍了如何在转换链接答案之前备份您的实例。