10,React Native之調(diào)試

1,開發(fā)中的紅屏和黃屏的問題
紅屏或黃屏提示都只會在開發(fā)版本中顯示,正式的離線包中是不會顯示的。
A 紅屏錯誤
應(yīng)用內(nèi)的報錯會以全屏紅色顯示在應(yīng)用中(調(diào)試模式下),我們稱為紅屏(red box)報錯。你可以使用console.error()來手動觸發(fā)紅屏錯誤。
B 黃屏警告
應(yīng)用內(nèi)的警告會以全屏黃色顯示在應(yīng)用中(調(diào)試模式下),我們稱為黃屏(yellow box)報錯。點(diǎn)擊警告可以查看詳情或是忽略掉。 和紅屏報警類似,你可以使用console.warn()來手動觸發(fā)黃屏警告。 在默認(rèn)情況下,開發(fā)模式中啟用了黃屏警告??梢酝ㄟ^以下代碼關(guān)閉:

console.disableYellowBox = true;
console.warn('YellowBox is disabled.');

你也可以通過代碼屏蔽指定的警告,像下面這樣設(shè)置一個數(shù)組:

console.ignoredYellowBox = ['Warning: ...'];

數(shù)組中的字符串就是要屏蔽的警告的開頭的內(nèi)容。(例如上面的代碼會屏蔽掉所有以Warning開頭的警告內(nèi)容)

紅屏和黃屏在發(fā)布版(release/production)中都是自動禁用的。

2,訪問控制臺日志
A 在運(yùn)行RN應(yīng)用時,可以在終端中運(yùn)行如下命令來查看控制臺的日志:

$ react-native log-ios
$ react-native log-android

此外,你也可以在iOS模擬器的菜單中選擇Debug → Open System Log...
來查看。如果是Android應(yīng)用,無論是運(yùn)行在模擬器或是真機(jī)上,都可以通過在終端命令行里運(yùn)行
adb logcat *:S ReactNative:V ReactNativeJS:V命令來查看。

B Chrome開發(fā)者工具
在開發(fā)者菜單中選擇"Debug JS Remotely"選項(xiàng),即可以開始在Chrome中調(diào)試JavaScript代碼。點(diǎn)擊這個選項(xiàng)的同時會自動打開調(diào)試頁面 http://localhost:8081/debugger-ui
在Chrome的菜單中選擇Tools → Developer Tools
可以打開開發(fā)者工具,也可以通過鍵盤快捷鍵來打開(Mac上是Command?+ Option?+ IWindows上是Ctrl + Shift + I或是F12)。
打開有異常時暫停(Pause On Caught Exceptions)選項(xiàng),能夠獲得更好的開發(fā)體驗(yàn)。
譯注:Chrome中并不能直接看到App的用戶界面,而只能提供console的輸出,以及在sources項(xiàng)中斷點(diǎn)調(diào)試js腳本。
目前無法正常使用React開發(fā)插件(就是某些教程或截圖上提到的Chrome開發(fā)工具上多出來的React選項(xiàng)),但這并不影響代碼的調(diào)試。如果你需要像調(diào)試web頁面那樣查看RN應(yīng)用的jsx結(jié)構(gòu),暫時只能使用Nuclide的"React Native Inspector"這一功能來代替。

使用Chrome開發(fā)者工具來在設(shè)備上調(diào)試
對于iOS真機(jī)來說,需要打開 RCTWebSocketExecutor.m
文件,然后將其中的"localhost"改為你的電腦的IP地址,最后啟用開發(fā)者菜單中的"Debug JS Remotely"選項(xiàng)。
對于Android 5.0+設(shè)備(包括模擬器)來說,將設(shè)備通過USB連接到電腦上后,可以使用adb
命令行工具
來設(shè)定從設(shè)備到電腦的端口轉(zhuǎn)發(fā):
adb reverse tcp:8081 tcp:8081

如果設(shè)備Android版本在5.0以下,則可以在開發(fā)者菜單中選擇"Dev Settings - Debug server host for device",然后在其中填入電腦的”IP地址:端口“。
如果在Chrome調(diào)試時遇到一些問題,那有可能是某些Chrome的插件引起的。試著禁用所有的插件,然后逐個啟用,以確定是否某個插件影響到了調(diào)試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容