症狀:Expo Go 原生模組報錯。 若專案依賴的原生程式碼不在 Expo Go 內建範圍,改用 development build(包含你專案原生依賴的練習版 App),不要一直重裝 Expo Go。
適用條件:你可以繼續用 Windows 編輯和雲端建置;只有需要在本機跑 iOS 模擬器或用 Xcode 除錯時,才需要準備 macOS。

本文適合跟著課程製作 Expo 或 React Native App,第一次遇到原生模組錯誤的學生。你可以用下面的症狀判斷是否該離開 Expo Go。
如果你只有 Windows 或受管理的學校電腦,也能分清實體 iPhone、雲端建置和 Mac 模擬器各自能做什麼。

先辨認錯誤類型:不是所有報錯都代表 Expo Go 不支援

先看錯誤發生在哪個階段:套件安裝時、JavaScript 執行時,還是 App 呼叫原生功能時。只有第三種情況,才特別需要檢查 Expo Go 是否缺少對應的原生實作。原生模組可以把 JavaScript 和手機系統功能接起來,例如相機、藍牙或生物辨識功能。

你看到的狀況 優先檢查什麼 建議處理方式
套件安裝失敗 套件管理器訊息、套件名稱與版本相容性 先修正安裝錯誤,再測試 App;此時還不能斷定 Expo Go 缺少原生模組
App 能啟動,但畫面或邏輯出錯 錯誤堆疊、JavaScript 程式碼與呼叫資料 按一般程式錯誤排查,不要先重建原生 App
呼叫功能時提示找不到原生實作 模組是否需要原生程式碼、Expo Go 是否內建支援 查 Expo 支援清單和套件文件;確定缺少時轉用 development build

把套件裝進專案,不等於把原生程式碼加進 Expo Go。Expo Go 是預先編譯的 App,只支援固定範圍的原生庫;可以先核對Expo 官方第三方套件支援清單。若套件要求的原生程式碼不在其中,重裝套件或反覆清除快取通常不會讓 Expo Go 多出這項能力;Expo 對 Expo Go 與 development build 的說明也指出,這類情況應考慮建立自己的 development build。

依照原生變更處理:分清何時要重新建置

development build 不是替 Expo Go 加裝外掛,而是為你的專案建置一個開發用 App,讓它帶有專案需要的原生依賴。Expo 的開發構建入門指南說明了這種開發方式;切換之後,新增原生套件或改動原生設定,仍要更新相應的建置。

用這個判斷順序,避免把每次程式修改都當成重建理由:

  1. 先確認模組需求。查套件文件,確認它是否需要原生程式碼,以及是否需要額外設定。
  2. 比對最近改動。只改 JavaScript 畫面、事件處理或一般邏輯時,先在目前的開發 App 中測試。
  3. 有原生變更就重新建置。新增原生依賴或改變原生設定後,重新產生包含新內容的 development build,並在目標裝置安裝。
  4. 核對執行中的 App。確認你啟動的是剛建置的開發版,而不是舊版 Expo Go 或之前安裝的 App。

如果只改 JavaScript,卻找不到功能,先確認程式是否真的執行到呼叫位置;如果新增原生依賴後仍提示找不到實作,就檢查是否重新建置、重新安裝。遇到需要自訂原生程式碼的課程內容,可再查Expo 自訂原生程式碼指南。

只有 Windows 時,按測試目標選路線

Windows 不會阻止你編輯 Expo 專案,也不代表你必須立刻租用 Mac。要先分清楚三件事:寫程式、建立 iOS App、在 iOS 模擬器中操作 App。EAS Build 是雲端代建置服務;它能替專案建置 iOS App,但不會把 iOS 模擬器變成 Windows 上的本機程式。

路線 可以完成什麼 不能代替什麼 適合情況
Expo Go 練習 JavaScript、測試內建支援的功能 不會補上未內建的原生程式碼 模組在支援範圍內,課程目前只要求基礎練習
EAS Build 雲端建置 從雲端建立 iOS 建置成果 不會在 Windows 本機開啟 iOS 模擬器,也不是 Xcode 除錯環境 需要建立 iOS development build,但手邊沒有 Mac
實體 iPhone 在真實裝置上測試相容的開發版 不等同於模擬器,也不提供 Xcode 的本機除錯介面 課程允許使用手機,且你能依流程安裝開發版
學校 Mac 或遠端 Mac 在 macOS 上使用 Xcode 與 iOS 模擬器驗收 不會自動修正專案程式碼或依賴設定 課程要求模擬器、Xcode 或 macOS 本機操作

Expo 說明了EAS Build 的 iOS 模擬器建置流程,而Expo 的 iOS 模擬器指南明確限定模擬器在 macOS 上執行。因此,沒有 Mac 時,你仍可在 Windows 編輯專案,並按官方流程使用 EAS Build;但不能把雲端建置誤認成 Windows 本機模擬器。

依課程要求選擇即可:若只是完成 JavaScript 練習,先留在 Expo Go;若缺少原生模組而又有合適的 iPhone,考慮 development build 加實體裝置;若作業明確要求模擬器或 Xcode 操作,才安排 macOS 環境。

常見問題:確認升級時機與設備限制

套件安裝成功,Expo Go 為何仍找不到功能?
套件可能已加入 JavaScript 專案,但對應的原生程式碼不在 Expo Go 內。先核對官方支援清單與套件文件,確定需要原生實作後,再建立 development build,不必重複安裝同一套件。

什麼時候才需要從 Expo Go 換成 development build?
當專案要用 Expo Go 未內建的原生套件、需要自訂原生程式碼,或課程要求測試這些原生功能時,就該考慮升級。若只改 JavaScript,通常可以先沿用目前的開發流程;改動原生依賴或設定後,才要重新建置。

沒有 Mac,能不能建立 iOS development build?
你可以在 Windows 編輯專案,並依Expo 的 development build 使用指南安排開發版;若要由 EAS 雲端建置,應以官方的建置說明核對目前流程。雲端建置不等於 Windows 本機模擬器;需要模擬器時仍須使用 macOS。

要怎樣用 iOS 模擬器驗收 development build?
先準備可使用的 macOS 與 Xcode,再依官方模擬器建置流程產生對應的 App,安裝並啟動。接著確認原生模組能呼叫、JavaScript 修改有反映,而且執行中的 App 符合課程要求。Windows 本機不能直接執行 iOS 模擬器。

修好後逐項驗收:確認 App 和課程要求一致

建置成功只代表產生了 App,不代表功能已經通過測試。請用同一個課程專案逐項檢查:

  • 專案改動已保存:確認依賴與程式碼修改都在目前使用的專案目錄,而不是另一份副本。
  • 建置方式符合目標設備:供實體 iPhone 使用的 App,不能當作模擬器建置使用;反過來也一樣。
  • 開發版確實啟動:確認裝置或模擬器開啟的是最新 development build,而不是 Expo Go。
  • 原生功能可以呼叫:實際操作課程要求的功能,觀察是否仍出現找不到原生實作的錯誤。
  • JavaScript 修改有反映:改動一段容易辨認的介面或文字,再確認目前 App 是否顯示新內容。
  • 敏感資料沒有公開:不要把帳號憑證或專案密鑰寫進公開程式碼庫。若專案使用建置環境變數,按Expo 的環境變數文件確認設定方式和用途。

若只有原生功能失敗,回頭查依賴與建置內容;若整個 App 無法啟動,則另外檢查建置成果、裝置相容性和啟動錯誤。這樣能避免把所有問題都算到 Expo Go 頭上。

需要模擬器時再準備 Mac:按課程邊界決定

如果課程只要求編輯程式碼,或雲端建置加實體 iPhone 已足夠,Windows 加現有設備可能更合適。若作業要求 Xcode 除錯、在 iOS 模擬器中操作,或檢查只有 macOS 環境才能完成的部分,就需要準備 Mac;校內設備可用時,先確認課程時段與使用權限。

遠端 Mac 可以補上 macOS、Xcode 與模擬器這一段,但你仍要確認專案傳輸方式、連線條件和課程是否接受遠端操作。你可以先查看遠端 Mac 環境方案;若在香港,也可參考香港地區的遠端 Mac 方案資訊。

和 Windows 加雲端建置相比,這條路線多了本機模擬器與 Xcode 驗收能力;但 Windows 無法直接提供 iOS 模擬器、雲端建置不包含本機 Xcode 操作、學校 Mac 也可能受借用時段限制。若課程確實卡在模擬器或 Xcode,而你手邊沒有可用的 Mac,租用 MACCOME 的遠端 Mac 可以先補足這段 macOS 工作;若只是練習一般 JavaScript,則不必為了 Expo 專案提早租用。