追隨著時代的腳步(?)况凉,采取著“還有頭發(fā)谚鄙,還能學(xué)”的方針,我從GitHub下載了React-Native項目刁绒,準(zhǔn)備開始學(xué)習(xí)......
然后我就進入了報錯天堂......
我承認(rèn)我的英文水平全靠看報錯提升的....
環(huán)境:macOS
Xcode:Version 10.1
Android Studio:Version 3.2
以下是遇到的報錯和它的解決方法....至于為什么會報錯闷营,為什么這樣解決,別問我知市,我也不知道......等哪天我研究透了可能再來補充.......
報錯1:Cannot find entry file index.android.js in any of the roots
在react native以前的版本傻盟,index.android.js與index.ios.js是分開的兩個文件,在最新版本中這兩個文件合并成index.js一個文件了嫂丙。但是如果你在創(chuàng)建項目之后直接運行娘赴,肯定會報Cannot find entry file index.android.js in any of the roots這種類似的錯誤,因為在根目錄下已經(jīng)不存在index.anroid.js和index.ios.js這兩個文件跟啤,所以肯定不會檢索到诽表,你更改App.js的內(nèi)容后更不可能生效。(https://www.cnblogs.com/honeynm/p/9007072.html)
解決方法:
- 創(chuàng)建
assets
目錄(android/app/src/main/assets)
react-native bundle --platform android --dev false --entry-file index.js --bundle-output ./android/app/src/main/assets/index.android.bundle --assets-dest ./android/app/src/main/res/
-
之后
assets
目錄下就會生成
之后在運行
react-native run-android
PS:有個很奇怪的點是隅肥,當(dāng)我改動了文件竿奏,要在Android Studio上跑的時候,需要把
assets
文件夾里面的文件刪除腥放,重新進行一次上面第二個步驟泛啸,才能顯示修改,請教有沒有大佬知道是為什么秃症?
報錯2:Android 報錯 react native syntaxError:Attempted to redefine property "xxxx"
項目內(nèi)有某個屬性“xxxx”被定義了多次候址,例如:
解決方法:
需要刪除/注釋一個,這在IOS運行時是可以的种柑,但是Android會報錯宗雇。
報錯3:Android Error:Execution failed for task ':app:lintVitalRelease'
解決方法:
在android/app/build.gradle
里的android{}
中添加
lintOptions {
checkReleaseBuilds false
abortOnError false
}
報錯/錯誤4:運行Android模擬器
解決方法:
用Android Studio查看項目時,我是跑在模擬器(夜神)上看效果莹规,所以這時候需要連接模擬器赔蒲,網(wǎng)上有各種連接模擬器的方法,基本都是Windows,不過方法差不多舞虱,只是Mac的地址是/你的主機名/Macintosh-HD/Applications/Nox\ App\ Player.app/Contents/MacOS
欢际,如果輸入到終端沒辦法跳轉(zhuǎn)的話,就需要一級一級往下找了矾兜。
然后運行adb connect 127.0.0.1:62001
损趋。
在Android Studio中,需要改成:
連接上的時候會有設(shè)備提示椅寺,如果找不到設(shè)備浑槽,重啟模擬器就好了。
報錯5:Android Error:moudle not specified
在上一個問題中返帕,配置里有個Module
桐玻,一般顯示的就是項目名,如果顯示的是<no module>
荆萤,并且你剛好又是第一次運行RN項目镊靴,什么也不懂,那么你需要查看一下链韭,你用Android Studio打開的是不是RN項目目錄.......
如果是偏竟,改成打開RN項目目錄下的android
文件夾:)
問題6:Android打包
https://blog.csdn.net/u011272795/article/details/77161942
基本根據(jù)這個文章配置就可以打包成功了,沒有成功就要一個一個解決報錯了敞峭。
報錯7:You have not accepted the license agreements of the following SDK components
缺少對應(yīng)的包踊谋。
解決方法:
看提示(例如Android SDK Platform 23
)下載相應(yīng)的包。
勾選然后下載即可旋讹。
報錯8:A problem occurred configuring project ‘:app’
解決方法:
在android
文件夾下創(chuàng)建local.properties
殖蚕,然后寫入
sdk.dir=你本地Android SDK文件夾路徑
如果不知道sdk路徑,打開Android Studio的
SDK Manager
就能看到了骗村。參考一下上一個問題的圖嫌褪。
問題9:打包發(fā)布
參考:https://blog.csdn.net/qq_38719039/article/details/80848290
問題10:IOS '......libfishhook.a'
error: Build input file cannot be found: '/Users/../node_modules/react-native/Libraries/WebSocket/libfishhook.a'
解決方法:
刪除該標(biāo)記下的
libfishhook.a
呀枢,然后重新添加一個就可以胚股。
報錯11:_react2.default.createContext is not a function
解決方法:
升級react版本即可:
//before:
"react": "^16.2.0",
"react-dom": "^16.2.0",
//after update:
"react": "^16.7.0",
"react-dom": "^16.7.0",
報錯12:Application XXX has not been registered
解決方法:
1、注冊方法寫錯
AppRegistry.registerComponent('MyDemo', () => MyDemo);
2裙秋、端口被占用
輸入react-native start
琅拌,如果出現(xiàn)Packager can't listen on port 8081
,就說明端口被占用摘刑,殺死進程即可进宝。
lsof -i :8081
kill -9 <PID>
報錯13:RNGestureHandlerModule.State error
解決方法:
這是在使用react-native
出現(xiàn)的報錯,是因為沒有連接造成的枷恕。
react-native link react-native-gesture-handler
報錯14:Command PhaseScriptExecution failed with a nonzero exit code
運行xcode模擬器顯示的報錯党晋,是因為Xcode10是默認(rèn)選中的最新的New Build System(Default)
,在這個編譯系統(tǒng)的環(huán)境下,打包的CI腳本一直會報錯未玻。
解決方法:
File>Project Setting...