剛開始接觸RN,總是會遇到各種紅屏黃屏報錯,紅屏是fatal error(程序無法正常運行),黃屏是Warming(非致命錯誤,程序可以運行但是存在潛在問題可能在某些情況下將導致fatal error)。
紅屏或黃屏提示都只會在開發版本中顯示,正式的離線包中是不會顯示的。應用內的報錯會以全屏紅色顯示在應用中(調試模式下),我們稱為紅屏(red box)報錯。你可以使用console.error()來手動觸發紅屏錯誤。
應用內的警告會以全屏黃色顯示在應用中(調試模式下),我們稱為黃屏(yellow box)報錯。點擊警告可以查看詳情或是忽略掉。和紅屏報警類似,你可以使用console.warn()來手動觸發黃屏警告。在默認情況下,開發模式中啟用了黃屏警告。可以通過以下代碼關閉:
console.disableYellowBox = true;
console.warn('YellowBox is disabled.');
你也可以通過代碼屏蔽指定的警告,像下面這樣調用ignoreWarnings方法,參數為一個數組:
YellowBox.ignoreWarnings(['Warning: ']);
數組中的字符串就是要屏蔽的警告的開頭的內容。(例如上面的代碼會屏蔽掉所有以Warning開頭的警告內容)。
我會在這里記錄下我遇到的比較典型的問題,不定時更新,一方面方便別人參考學習,一方面也給自己做個記錄歸納。
紅屏報錯
The development server returned response error code 500

這通常是因為NPM包出現異常產生的問題,可以嘗試把node_modules文件夾刪除后重新下載一次,可以通過在項目根目錄里運行以下命令行代碼:
rmdir -rf ./node_modules && npm install && npm link
黃屏報錯
終端報錯
Could not get unknown property 'MYAPP_RELEASE_STORE_FILE' for SigningConfig
原因:
打包過release包之后Gradle里面沒有密碼
解決方法:
編輯~/.gradle/gradle.properties(沒有這個文件你就創建一個空文件),添加如下的代碼(注意把其中的替換為相應密碼)。
gradle.properties文件應該使用RNProject/android/下面的gradle.properties
也就是說在gradle.properties里面添加
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=* MYAPP_RELEASE_KEY_PASSWORD=*
You have not accepted the license agreements of the following SDK components

原因:
缺少相應的包(我這里就是Android SDK Platform 23相關的工具)
解決方法:
使用AS的SDK Manager下載相應的包



這個時候再運行一次,依然報錯。
打開sdk目錄進入tools\bin\

在此目錄下使用命令行執行
./sdkmanager --licenses

然后在出現的協議里一直按Y即可。
Could not expand ZIP

原因:暫時不明
解決方案:
進入工程文件夾下android目錄內

在此文件夾內運行命令行提示符
./gradlew clean

完成之后重新Build即可。
unable to find utility "instruments", not a developer tool or in PATH
報錯原因:
升級過xcode或者xcode多版本共存下沒有設置默認版本
解決方案:
打開xcode,選擇

切換到Locations,在command line tools 中選擇你需要用的版本

此時完全退出xcode,再次嘗試run-ios,一切正常!

