# React Native筆記1 - 安裝 [官方文檔 - Getting Started](https://facebook.github.io/react-native/docs/getting-started) 可以對照著官方文檔看這份筆記,理論上我只是翻譯了一下,如果有遇到bug再順便記個解決方式這樣xd 在開始以前先簡單簡介一下React Native是什麼: 他是一個Facebook開發的框架,可以用一套程式寫出能同時在ios和android平台跑的手機app(跨平台),使用的語言是Javascript。 ## 安裝Expo CLI - 安裝[Node.js](https://nodejs.org/en/download/) - 打開cmd - 進行Expo CLI的安裝:```npm install -g expo-cli``` - (不知為何會出現一堆警告,但有安裝完成) - [為何專題選擇Expo CLI而不是React Native CLi](https://stackoverflow.com/questions/54862388/what-is-the-difference-between-expo-cli-and-react-native-cli) - 初始化你的project(這裡取名為AwesomeProject):```expo init AwesomeProject``` - template:先選blank就好 - 啟動開發的server:```cd AwesomeProject``` ```npm start``` - 會開一個新的分頁,先放著xd ## 執行React Native應用程式 - 手機安裝Expo程式 - 去Google Play搜尋Expo - 確認手機和電腦連到同一個wifi - 手機打開Expo程式,點Scan QR Code來掃描剛才電腦Expo那個分頁的QR code - 另一種方法:註冊expo帳號,在app登入,也可以看到你的project們 - 做完```npm start```之後按```s```來註冊新帳號 --- ### :warning:如果有error 如果你跟我一樣遇到error (qr code掃描完出現 **could not load ..... Network response timed out**) ### 初步解法 第一步:建立**package.json檔案** - [資料來源](https://ithelp.ithome.com.tw/articles/10191682) - 執行 ```npm init``` - 要在你的project外面一層的資料夾執行ㄛ - 例如我的project放在 \charlotte\awesomeproject,那我就要在charlotte跑npm init - 接下來他會叫你輸入一些欄位,括號內是範例,照著打也可以 - package name: 這個project的名字 - version: 照打 - description: project介紹 - entry point: 打app.js (執行哪個檔案來開啟你的project) - test command: 直接enter - git repository: 我是沒有啦,直接enter - keywords: 直接enter - author: 作者名稱 - license: 直接enter - 確認好就輸入yes~ 你的package.json就建立好了 第二步:改成**Tunnel連線** - 電腦打開你剛才開著的expo分頁,把左下角的連線從LAN改成Tunnel - 用手機再掃一次QR Code! 這樣應該就成功了,只是因為切換成Tunnel所以下載javascript會變慢,如果有其他解決方式再補充 ### 如果還有問題 幾種解法提供參考: - 你的電腦和手機確定是連到**同一個wifi**? - 你484一打開expo cli就立刻切tunnel?(我是otz) - 要等到系統啟動完才可以切!!!應該會**顯示以下三行** - Starting Metro Bundler on port 19001 Watch mode is not supported in this environment Tunnel ready - 一定要等到這三行跑完!!!! ~~(痛哭~~ 不過有時候會跑蠻久的 - 欸……我也不知道了 可能重開電腦/重開expo/重載expo之類的吧 我幫不了你了qq --- ### :warning: 如果打的東西不會即時變更在手機上 如果你跟我一樣很雖的又遇到bug,發現打的東西不會出現在手機上…… (為了解決這個問題,我來回試了很多個方法,不知道什麼時候就成功了xd) #### 如果出現的是:"cannot connect to Metro server" 在手機打開project以後,閒置過一段時間好像會**自動斷線**,重連看看(把app重新啟動,或是重新```npm start```之類的)應該就好了 #### 如果是別的問題,再試試底下方法 首先,確定一下電腦分頁裡面的 **Production Mode是關著的** [延伸閱讀 - Development Mode & Production Mode](https://docs.expo.io/versions/latest/workflow/development-mode/) 方法1:修改環境變數 (我覺得不是這個緣故就是了xd) - 打開電腦的控制台 > 系統及安全性 > 系統 > 進階系統設定 > 環境變數 - 在 **系統變數** 裡面新增你的npm資料夾路徑 - 通常在C:\使用者\使用者名稱\AppData\Roaming\npm,你可能要翻翻看自己的在哪 方法2:開啟動態顯示變更設定 ([資料來源](https://docs.expo.io/versions/v34.0.0/workflow/up-and-running/)) 第一步:手機開啟USB Debugging (步驟可能根據不同品牌手機有所不同,我asus的xd) - 打開手機的設定 > 系統 - 開發人員選項 > 滑到底下,開啟USB偵錯 - 如果沒有"開發人員選項"這個選項:點選關於手機 > 軟體資訊 > 在版本號碼上面點很多次,開發人員選項就會跑出來 第二步:用USB線連接你ㄟ手機和電腦 - 打開expo,搖搖手機應該會出現開發人員選項 (我不知為何搖不出來XD) - 如果有看到 "**Enable Live Reload**" 就點一下,這樣才會動態顯示變更 - 如果看到 "Disable Live Reload" 那你設定應該沒錯,重啟程式看看有沒有幫助吧 如果還有問題就不是這個的原因xd --- ## 開始開發! QR code掃描成功以後,就可以用你喜歡的編輯器打開project裡面的App.js 開始編輯拉~ 想要在手機上跑跑看你寫的程式,就需要: - 開電腦cmd,移動到你的專案資料夾 (例如:```cd AwesomeProject```) - 開啟npm (然後他會一起開expo) ```npm start``` - (跟我一樣遇到上述bug的人) 分頁連線記得改tunnel - 打開手機expo程式,點開你的project就有嘍~~ [下一篇](https://hackmd.io/@charlo0602/HyYLG-aXL)筆記進教學嘍! ---