Linking Projects
疑難解答 - 有問題嗎?
有時候開發 Native module 時會遇到明明已經 yarn link
、也已經 react-native link
,build 也正常,但使用 console.log 查看 module 內容卻都是 undefinded
。
注意 1
首先,確認是否使用了
yarn link
之後還在package.json
中新增了 native module 的路徑,這樣會導致錯誤、衝突,一團混亂。注意 2
要記得確保 Android Studio 沒有任何需要 Sync Gradle 的提示。
注意 3
每次改完 native module,都要使用 Android Studio 執行選單 Build ->
rebuild
,然後重新透過react-native run-android
來 deply 到 device,否則 React Native Packager 會提示找不到你的 native module。小提醒
在製作 native module 時,建議同時使用
Android Studio
開啟 module 與 RN 專案兩個目錄,除了可以使用logcat
偵錯之外,如果有任何指令下錯、link 錯誤,都可以由Android Studio
直接獲得提醒。
無論是否忘記在 package.json
中移除先前新增的套件路徑,我們這時候可以試著透過清除 React Native 的環境快取以及重新 link 彼此來解決問題。
先確認 RN 專案與 Native module 目錄關係如下:
.[root]
├──[react_native_project]
└──[native_module]
# Step-1
# 先切換到 native_module 目錄下
$ cd root/${native_module}
# 需要先 unlink 再 link
$ yarn unlink && yarn link
# Step-2
# 切換回 RN 專案目錄
$ cd ../react_native_project
# yarn unlink ${native_module_name}
$ yarn unlink react-native-my-android-toast
# 清除快取並重新 install node packages
$ watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf node_modules/ && yarn install
# 重新 yarn link ${native_module_name}
$ yarn link react-native-my-android-toast
# 再次安裝
$ react-native run-android