1. 程式人生 > >React Native開發總結

React Native開發總結

注:本文是我在開發過程中遇到問題解決方法的總結,之後會持續更新,希望幫助到更多的學習者。文中有不妥的地方希望指出共同學習,同時歡迎大神補充。(之後我會放出自己開發整理的筆記和demo)歡迎持續喜歡關注 star。

錯誤1:


Paste_Image.png


估計是程式中有格式錯誤請自行檢查比如:你註釋出來問題。
{/*title="張三"*/}
//title="張三"

錯誤2:


Paste_Image.png

這個說明你要跳轉的頁面缺少子控制元件。所以你要在裡面新增東西比如加個:<View></View>

警告3:除錯警告


Paste_Image.png


看下報的警告就知道除錯程式在這個視窗導致執行緩慢,所以建議你換一個單獨新的視窗進行除錯

警告4:


Paste_Image.png
Paste_Image.png


加上:

 <key>NSAppTransportSecurity</key>
 <dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
 </dict>

錯誤4:


Paste_Image.png


這個很神奇。遇到了不要緊張多按 ⌘R幾下或者把模擬器上的專案刪除之後重新載入一般就會解決

錯誤5:


Paste_Image.png

認真看下錯誤資訊,上面說你忘記返回值了 所以你的函式中少了一個return();

錯誤6:



如果你檢查程式碼確實沒有錯誤。還報這個錯,那就說明你的埠被佔用了。開啟終端,切換到專案目錄。執行react-native start
如果出現Packager can't listen on port 8081那說明埠被佔用了。
:根據命令列提示進行操作:
1.lsof -n -i4TCP:8081 列出被佔用的埠列表
2.kill -9 <PID> 找到與之對應的PID然後刪除即可

錯誤7:

SyntaxError: SyntaxError /Users/zhaopengsong/Desktop/ReactNative/BuyDemo/Component/Main/ZPMain.js:
JSX value should be either an expression or a quoted JSX text (107:22)

Paste_Image.png

語法錯誤,JSX語法必須用{}對變數進行賦值:如title=titleName換為title={titleName}
或者檢查下有沒有其他的語法錯誤,比如少了逗號多了分號這些低階錯誤

錯誤8

Requiring unknown module "undefined".If you are sure the module is there, try restarting the packager or running "npm install"

Paste_Image.png

這個錯誤我的解決思路是:之前改過什麼,撤回,一般是用到了錯誤的react-native 方法導致的。

錯誤9:


Paste_Image.png


原因:沒有啟動後臺react-Native 服務。即終端


Paste_Image.png

錯誤10:

如果你遇到了列如九宮格不自動換行的情況,檢查一下樣式裡面有沒有這兩句話flex-start:交叉軸的起點對齊。``wrap:換行,第一行在上方。


Paste_Image.png

錯誤11:

ExceptionsManager.js:63 Expected a component class, got [object Object]

Paste_Image.png


解決方法:
You need to rename your commonViewclass to CommonView, the class must becapitalize

錯誤12:


NSURLErrorDomain

這是你請求的URL錯誤。要是https:// 的才行。

錯誤13:建立新專案,react-native init 專案名命令長時間無響應,或報錯shasum check failed

react-native命令列從npm官方源拖程式碼時會遇上麻煩。請將npm倉庫源替換為國內映象:

npm config set registry https://registry.npm.taobao.org --global 
npm config set disturl https://npm.taobao.org/dist --global

另,執行init時切記不要在前面加上sudo

錯誤14:修改8081預設埠號的兩種方式

(1)啟動專案時react-native start --port 8083
(2)手動修改專案下的node_modules\react-native\local-cli\server\server.js下的方法server.js檔案,如下圖所示。


Paste_Image.png

錯誤15:

Application NewsDemo has not been registered. 
This is either due to a require() error during initialization 
or 
failure to call AppRegistry.registerComponent.

Paste_Image.png


錯誤原因是埠衝突。解決方法是看錯誤14
其次解決方法是:

1、終端
2、cd 到專案目錄
3、react-native start
4、lsof -n -i4TCP:8081 //這句可以看打印出8081埠下的服務
5kill -9 <PID>    //終止你其他佔用埠

如圖:


Paste_Image.png

錯誤16:

如果你遇到了這個問題,並解決了。希望能在下面留言幫助更多的人。感謝!(我的錯誤原因是require路徑出錯,我是換用URI 載入image資源解決的)


錯誤17:

錯誤出現執行react-native run-ios出現下面錯誤

Failed to install the requested application
An application bundle was not found at the provided path.
Provide a valid path to the desired application bundle.
Print: Entry, ":CFBundleIdentifier", Does Not Exist

Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/ReactNativexx.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

Paste_Image.png

解決方法:
1、新建專案指定版本:
--version引數建立指定版本的專案。例如react-native init DemoApp --version 0.44.3注意版本號必須精確到兩個小數點。
專案建立好之後:執行:react-native run-ios

2、嘗試reset一下 模擬器之後再react-native run-ios


Paste_Image.png


3、嘗試執行react-native upgrade 然後一路enter
react-native run-ios試試?
解決方法參考連結:連線1,連線2

3、在這裡感謝:LeeyaWang 提供自己的解決思路:希望對之後遇到此問題的同學有所幫助!

步驟是:
1、首先刪除node_modules
2、修改package.json中react-native的版本為0.44.3 react為16.0.0-alpha.6
3、react-native run-ios 就可以啦 後來是出現我發你的問題 我覺得 應該是我這邊vpn的問題,所以我重啟了一下電腦 然後重置了模擬器 就可以了

友情提示: 如果你用的ReactNative版本為0.45.1,新建專案之後執行出現這個錯誤:
'boost/iterator/iterator_adaptor.hpp' file not found


'boost/iterator/iterator_adaptor.hpp' file not found


錯誤原因: 0.45需要下載boost編譯,因為被牆了所以會無法執行。
解決方法:
方法1、

第一步:將專案中的package.json檔案修改為這樣:


image.png


第二步:修改完成之後刪除node_modules資料夾在終端run:npm install
第三步:執行:react-native run-ios

方法2、新建專案指定版本:
--version引數建立指定版本的專案。例如react-native init DemoApp --version 0.44.3注意版本號必須精確到兩個小數點。
專案建立好之後:執行:react-native run-ios

錯誤18:


Paste_Image.png

解決:

var View = React.View;

/* later... */
propTypes: {
    ...View.propTypes,
    myProp: PropTypes.string
}

錯誤19:(這個錯誤我的解決方法是新建專案,把元件放到新專案,重新安裝第三方,然後run,雖然笨了點,但是問題解決了。)


Paste_Image.png

嘗試解決:1、react-native link ||rnpm link一下然後再安裝
react-native run-ios遇到:


Paste_Image.png

錯誤20:

Application textDemo has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.


14C430A5-CA91-4731-89E0-55318AB9AACF.png

解決方案:
1、是註冊的時候寫錯了。也就是這段話註冊的不對:
AppRegistry.registerComponent('textDemo', () => textDemo);
注意:‘textDemo’這個是專案名 textDemo這個你可以隨自己你喜好指定。

2、很有可能是8081埠被佔用了
你可以嘗試:切換到專案所在目錄,輸入react-native start如果出現Packager can't listen on port 8081那說明埠被佔用了。
根據命令列提示進行操作:
1.lsof -n -i4TCP:8081 列出被佔用的埠列表
2.kill -9 <PID> 找到與之對應的PID然後刪除即可
3.重新執行專案 react-native run-ios/android

錯誤21 :

如果你專案中頻繁遇到:
'RCTRootView.h'file not found.
RCTBridgeModule.h file not found


Paste_Image.png

解決方法:
1、新增link :$(SRCROOT)/../node_modules/react-native/React


Paste_Image.png


2、到專案目錄下sudo npm install試試。
3、

#import "RCTBridgeModule.h"
換為

#import <React/RCTBridgeModule.h>

警告22⚠️:

安裝的過程中可能會遇到UNMET PEER DEPENDENCY的錯誤


Paste_Image.png


解決辦法就是在安裝的時候 指定具體的版本安裝:sudo npm install -g [email protected]~15.4.1
這個警告:
npm WARN [email protected] requires a peer of [email protected] but none was installed.


Paste_Image.png


解決:
npm install –save [email protected]

警告23⚠️:遮蔽OS_ACTIVITY_MODE.log

react-native 執行應用xcode列印log__nw_connection_get_connected_socket_block_invoke Connection has no connected handler
解決方法:

1. Xcode menu -> Product -> Edit Scheme...
2. Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", Value:"disable"
3. Run your app again, done! 這樣就沒問題了

圖示:


Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

錯誤24:

Unable to resolve module `react/lib/ReactComponentWithPureRenderMixin` from
`/Users/song/Desktop/ReactNativeRouterFlux/node_module
s/react-native-experimental-navigation/node_modules/react-addons-pure-render-mixin/index.js`:
 Module does not exist in the module map or in these directories:

Paste_Image.png
Paste_Image.png

解決:
類似這種錯誤,就是缺少模組,通過npm i react-addons-pure-render-mixin -S 命令即可,標記部分是你缺少的模組名。
如果這樣解決不了問題,那你需要降低的的RN版本。可能版本過新了。
1、檢視你的版本:react-native --version
2、安裝適當的版本:npm install --save [email protected]
3、更新一下模板:react-native upgrade

錯誤25

RCTSRWebSocket.m報錯
Ignoring return value of function declared with warn_unused_result attribute

這個報錯在此檔案中有兩處,程式碼
SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);
修改為
(void)SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);
前面加上(void)

RCTScrollView.m 報錯
Use of undeclared identifier '_refreshControl'; did you mean 'refreshControl'?

解決:

@implementation RCTCustomScrollView
{
  __weak UIView *_dockedHeaderView;
  RCTRefreshControl *_refreshControl;  // 加入此行
}

警告26⚠️:

[ReactJS Warning: Each child in an array or iterator should have a unique “key” prop]

image.png


遇到這個警告說明你的多個檢視陣列需要給個KEY標示!
可以給每個控制元件加上Key這樣寫:

<Text  key={0} style={{ position:'absolute', width:imgwidth,height:imgheight,top:64+Y,left:X,fontSize:parseInt(layoutData.fontsize)}}>{texts}</Text>

錯誤 27:Warning: Failed prop type: Invalid prop source supplied toRCTImageView OR

ExceptionsManager.js:71 Warning: Failed prop type: Invalid prop source supplied toImage.


image.png

解決:這個錯誤的原因是你給Image 的Source 有問題 比如不是一個URI ,檢視一下不是不傳入了一個物件像這樣。


image.png

錯誤28:

boost/iterator/iterator_adaptor.hpp' file not found

相關推薦

react-native開發總結

文件 select 全局 處理 eas 簡介 con 左右 java 項目地址:http://liu12fei08fei.github.io/blog/41react-native.html 說明 ? 項目總結代碼地址 ? 從項目開始啟動(2018-07-02)到項目進入測

React Native 開發總結

前言   2015年3月, Facebook正式釋出react-native,只支援iOS平臺;2015年9月,Facebook釋出了React Native for Android,讓這一技術正式成為跨平臺開發框架。   我們團隊是在2016年中期開始接觸並使用

React-Native開發總結-html層面上的問題

最近更新時間:2017年10月29日14:50:47    做前端開發,熟悉了HTML+CSS+JS的開發模式,如果不看RN原理,直接用老一套的邏輯思維上手RN,可能會大跌眼鏡。高效開發的前提,需要學習並理解RN的原理。本文主要記錄內容是,關於RN開發的HTML層面上的問題。

React Native開發總結

注:本文是我在開發過程中遇到問題解決方法的總結,之後會持續更新,希望幫助到更多的學習者。文中有不妥的地方希望指出共同學習,同時歡迎大神補充。(之後我會放出自己開發整理的筆記和demo)歡迎持續喜歡關注 star。 錯誤1: Paste_Image.png 估計是程式中有

react-native開發總結之TextInput失去焦點觸發事件和TextInput間切換

問題:如何在TextInput失去焦點觸發事件? 需求:在TextInput輸入文字後,旁邊有個取消按鈕,點選取消按鈕會有事件觸發。(模糊搜尋) 突發情況:在TextInput獲取焦點後我需要觸發點選事件,需要點選兩次:第一次失去焦點,第二次方可觸發點選事件; 百度

React-Native開發總結+構建-除錯-基礎歸納總結

更新時間:2017年11月07日16:47:07    對於前端工程師來說,這幾年是最輝煌的時刻,前端框架層出不窮,而且出現了像RN這種功能的框架,更讓移動開發工程師大跌眼鏡望洋興嘆。新技術的不斷湧現,說明了一個問題,前端在程式設計技術界的地位越來越高,而且前端工程師的崗位越

React-Native開發總結-react-navigation應用與實踐

最近更新時間:2017年10月29日14:03:20    做開發的同學都知道,難的不是技術本身,而是產品需求的頻繁變更和邏輯複雜度,這讓研發工程師最為苦惱。但總體上來說,積累技術經驗,善於總結和記錄技術的實踐心得,也是一件優雅和愉悅的事情。    對於開發的同學來說,RN開

React-Native開發總結-webview

最近更新時間:2017年12月14日19:36:11    上學的時候希望儘早工作,融入社會,積累工作經驗。工作之後才發現,工作永遠幹不完,而且每個專案都不一樣,積累工作經驗不是一時半會的事情,而是日積

React-Native開發之BUG 總結

本部落格將詳細記錄在React-Native開發中所遇到的各種問題以及其解決方法。個人感覺,React-Native開發初期真的是一腳一個大坑,分分鐘被虐趴下。不說了,直接上Bug1、在Windows下

react native 知識點總結(一)

修改 ltp 組件 改變 set 覆蓋 sta 一個 個數 一、關於react native 版本的升級 參照文檔:http://reactnative.cn/docs/0.45/upgrading.html react-native -v

React Native開發React Native控件之ProgressBarAndroid進度條解說(12)

ice 發現 來講 top 文章 func dev all ios 轉載請標明出處:http://blog.csdn.net/developer_jiangqq/article/details/50596367本文出自:【江清清的博客】(一)前言 【好消息】

Windows搭建React Native開發環境

win 9.png 技術 src alt blog nat -1 bsp 成功部署 Windows搭建React Native開發環境

react-native 開發環境搭建

post 註意 令行 圖片 技術 usb bubuko http androi 首先安裝jdk。本教程基於jdk1.8,安裝時有一點要特別註意:jdk和jre必須裝到不同目錄下,否則初始化react-native項目時大概率報tools.jar not found ex

react-native-開發環境搭建

Go roi ids ati ios studio androi 工具 sta 一、開發環境搭建-windows平臺; 安裝 node 安裝 react native npm install -g react-native-cli 安裝Android開發工具Androi

React Native開發App狗狗說 視頻教程

發送 blank 打包 鏈接 同步 pan 創建 開發 數據庫 第01章 課程預熱 1-1 1-2 為何選擇 React Native 1-3 RN 適合你麽第02章 初始 React Native 2-1 本地環境搭建 2-2 忍不住嘗嘗鮮 2-3

React-Native開發react-navigation開發中的一些常見的坑

1 前言 都說RN開發效率高,一次學習隨處編寫。真的用RN開發了一個APP才知道,RN中坑真是太多,特別是很多坑只有在生產模式下才會出現,在平常的debug模式下,APP執行好好的,但是你一旦打正式包,就會發現各種報錯,各種崩潰,如果在Android平臺下,各種相容性,各種奇葩的問題

React-Native開發react-navigation之Android的打包與釋出

1前言 RN的開發中正式釋出前需要打包與簽名,然後才能上架各家應用市場。打包需要將js與圖片資原始檔打包進apk檔案中,生成index.android.bundle與index.android.bundle.meta檔案。下面介紹RN開發中打包APK的主要步驟,IOS沒研究過,不再本

React-Native開發react-navigation之自定義元件Counter

1 前言 我們知道RN中任何介面元素都可以看成元件,小到一個按鈕,大到一個頁面。RN開發就是不停的開發元件和使用元件,並讓他們協同工作,這樣高效率協同的執行起來,這樣就能完成一個APP的功能了 在實際的開發中,我們經常需要自定義一些滿足我們專案開發的自定義元件,類似於Android

React-Native開發react-navigation之AsyncStorage資料儲存

1 前言 我們都知道,在Android和IOS中分別有不同的持久化資料方式,例如Android中的檔案,資料庫,SharePrefences等。AsyncStorage是一個簡單的key-value儲存系統,是RN官方推薦的。它儲存的都是String型別的資料,是一個RN中輕量級的資

React-Native開發react-navigation之StackNavigator簡介

1 前言 react-navigation是RN開發中一款開源的導航元件,它的功能包括StackNavigator,TabNavigator,DrawerNavigator。react-navigation的出現替代了Navigator、 Ex-Navigation等老一代的導航元件