在使用 npx expo start
啟動 Expo 開發服務器時,你可以通過設置網絡模式來控制你的應用如何連接到開發服務器。Expo 提供了幾種網絡模式供你選擇:
-
LAN (Default): 這是默認模式。在這種模式下,你的應用會通過本地局域網 (LAN) 連接到你的開發機器。這要求你的手機或模擬器與你的電腦處于同一個 Wi-Fi 網絡下。這是通常開發時最常用和推薦的模式,因為它速度最快。
- 使用方式:
npx expo start
(無需額外參數) 或npx expo start --lan
- 使用方式:
-
Tunnel: 這種模式通過 ngrok 服務創建一個公共可訪問的隧道,將你的本地開發服務器暴露到互聯網上。這允許不在同一個局域網下的設備訪問你的應用。當你需要在不同網絡環境的真實設備上測試應用,或者需要遠程分享你的開發進度時,這個模式非常有用。但是,隧道模式通常比 LAN 模式慢,并且依賴于第三方服務。
- 使用方式:
npx expo start --tunnel
- 使用方式:
-
Localhost: 這種模式只允許在你的開發機器上運行的模擬器或瀏覽器訪問開發服務器,連接地址是
localhost
。這對于在模擬器上進行開發和調試非常方便,尤其是在網絡環境復雜或沒有 Wi-Fi 的情況下。- 使用方式:
npx expo start --localhost
- 使用方式:
你也可以使用 --host
參數來指定網絡模式,例如:
npx expo start --host lan
npx expo start --host tunnel
npx expo start --host localhost
總結如何設置:
在終端中,進入你的 Expo 項目目錄,然后運行 npx expo start
命令,并根據你的需求添加相應的參數:
- 使用 LAN (默認):
npx expo start
- 使用 Tunnel:
npx expo start --tunnel
- 使用 Localhost:
npx expo start --localhost
選擇哪種模式取決于你的開發場景和需求。對于日常開發和測試,LAN 模式通常是最佳選擇。當你需要遠程測試或分享時,可以使用 Tunnel 模式。而 Localhost 模式則適用于只在本地模擬器或瀏覽器中運行和調試的情況。
如果你有多個網絡接口(比如有線連接和無線連接,或者虛擬機創建的虛擬網絡),Expo CLI 在啟動時可能會選擇一個錯誤的 IP 地址作為 LAN 連接的服務器地址,導致設備無法連接。
雖然 npx expo start
命令本身沒有直接指定綁定 IP 地址的參數,但你可以通過設置一個環境變量來強制 Expo 客戶端(如 Expo Go 或 Development Client)連接到你指定的 IP 地址。
這個環境變量是 EXPO_PACKAGER_PROXY_URL
。
使用 EXPO_PACKAGER_PROXY_URL 指定 IP:
-
找到你想要使用的網絡接口的 IP 地址。 你可以在操作系統的網絡設置中查找,或者使用命令行工具(如
ipconfig
在 Windows 上,ifconfig
或ip addr
在 macOS/Linux 上)來查看。找到你在局域網中使用的那個網絡的 IPv4 地址(通常是 192.168.x.x 或 10.0.x.x)。 -
在啟動 Expo 開發服務器之前,設置
EXPO_PACKAGER_PROXY_URL
環境變量。 你需要將它設置為http://你的_IP_地址:開發服務器端口
。Expo 的默認開發服務器端口通常是 19000 或 8081 (Metro)。-
在 macOS 或 Linux (使用 Bash/Zsh 等 Shell) 中:
Bashexport EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:19000 npx expo start
或者如果 Metro 端口是 8081:
Bashexport EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:8081 npx expo start
請將
你的_IP_地址
替換為你實際的局域網 IP 地址。 -
在 Windows 命令提示符 (CMD) 中:
DOSset EXPO_PACKAGER_PROXY_URL=http://你的_IP_地址:19000 npx expo start
請將
你的_IP_地址
替換為你實際的局域網 IP 地址。 -
在 Windows PowerShell 中:
PowerShell$env:EXPO_PACKAGER_PROXY_URL="http://你的_IP_地址:19000" npx expo start
請將
你的_IP_地址
替換為你實際的局域網 IP 地址。
-
解釋:
設置 EXPO_PACKAGER_PROXY_URL
環境變量并不會改變 Expo 開發服務器實際綁定到哪個 IP 地址(它可能仍然綁定到所有可用接口的 0.0.0.0),但它會告訴 Expo CLI 在生成二維碼和鏈接時使用你指定的 URL。Expo Go 和 Development Client 在連接時會優先使用這個指定的 URL,從而確保它們連接到你期望的網絡接口。
注意事項:
- 通過
export
或set
設置的環境變量通常只在當前的終端會話中有效。如果你關閉終端窗口再重新打開,需要重新設置。 - 確保你的設備(手機或模擬器)可以通過你指定的 IP 地址訪問你的電腦。這意味著它們需要處于同一個局域網,并且你的電腦防火墻允許來自該網絡的連接到 Expo 使用的端口(默認為 19000 或 8081)。
- 如果你的 IP 地址經常變化(例如 DHCP 分配),每次開發前可能都需要重新查找并設置這個變量。
這種方法比嘗試修改操作系統層面的網絡接口優先級更直接,是解決 Expo CLI 在多網卡環境下選擇錯誤 IP 問題的常用手段。
remark:Nativewind css網站自己用??Installation