私はReact Expoで作成されたネイティブプロジェクトに取り組んでいます。私はreact-native
からインポートした通常の古いAsyncStorage
を使用しており、すべて順調です。
テストのためにAsyncStorage
をモックする方法を調べたところ、react-native-community/react-native-async-storage
には独自のモックが組み込まれていることがわかりました。
コミュニティプラグインをyarn add
でインストールし、すべてのインポートステートメントを切り替えました。
アプリを実行すると、エラーが発生します(自分で入力し直しています。省略記号がいくつかあります)。
[@RNC/AsyncStorage]: NativeModule: AsyncStorage is null.
To fix this issue try these steps:
-Run `react-native link @react-native-community/async-storage` in the project root.
-Rebuild and restart the app
-Run the packager with `--clearCache` flag.
-If you are using CocoaPods on iOS...
-If this happens while testing with Jest...
だから私はreact-native link @react-native-community/async-storage
を実行してみましたが、このエラーが発生し続けます:
Something went wrong while linking. Error: Cannot read property 'pbxprojPath' of null
いくつかの調査から、Expoアプリはリンクできない(そしてリンクする必要がない)ことがわかりました。
npm start --clearCache
を試しても無駄になりました。
また、プロジェクトにios
(またはAndroid
)フォルダーがありません。あちこちで参照されているのを見ると、これは常に私にとって混乱の種でした。 Expoアプリを介してシミュレーター/エミュレーター(およびデバイス)でアプリを実行します。一度イジェクトしてみたところ問題がありました。そのため、ios
フォルダーはありません。
(react-native
からの古いネイティブAsyncStorage
を使用してモックを作成することに戻りますが、これを解決する方法、および将来発生する可能性のある同様の問題について知りたいのですが。)
Metroバンドラーを閉じてreact-native run-Android or run-ios
を実行するだけで修正されます。