React Native (Expo) [storage/unknown] An unknown error has occurred.
はじめに:結論
React Native (Expo) 環境で Firebase Storage に画像をアップロードしようとした際に [storage/unknown] An unknown error has occurred.
というエラーに遭遇した場合、expo-image-picker
を使用することで解決できる可能性があります。
筆者は react-native-image-picker
を使用していたことが原因でこのエラーに遭遇し、約2日間ハマってしまいました。
背景
React Native の知識があまりない状態から、VibeCodingでiOS アプリ開発に挑戦していました。画像アップロード機能の実装に取り掛かったところ、タイトルのエラーが発生し、解決までに多くの時間を費やしてしまいました。
AI は当初 react-native-image-picker
を提案し、このライブラリに固執したデバッグや修正を繰り返しましたが、残念ながら問題は解決しませんでした。(AIの能力を否定するものではありません。後述しています。)
エラー内容
Firebase Storage への画像アップロード処理を実行すると、以下のエラーメッセージが表示されました。
[storage/unknown] An unknown error has occurred.
また、Xcode のデバッグターミナルでは、別のエラーメッセージも確認できました。
finished with error [40] Error Domain=NSPOSIXErrorDomain Code=40 "Message too long"
この Message too long
というエラーは、送信するデータサイズが大きすぎる場合に発生することがありますが、今回の根本的な原因はライブラリの選択ミスでした。
expo-image-picker
への変更
解決策:AI の提案に固執せず、一度原点に立ち返り、Google で情報を検索しました。その結果、Expo 環境で画像ピッカーを使用する場合は expo-image-picker
を利用するのが一般的であるという情報(複数のYouTube動画など)を複数見つけました。
そこで、react-native-image-picker
から expo-image-picker
にライブラリを変更し、関連するコードを修正したところ、すんなりと画像アップロード機能が動作するようになりました。
考察:AIを最大限活用する方法
今回の件は、たまたま AI が最適な解決策を提示できず、結果として遠回りになってしまいました。しかし、これは AI の能力を否定するものではありません。実際、今回の iOS アプリ開発や学習の大部分、そして日々の様々な場面で AI の恩恵を受けています。
重要なのは、日々賢くなっていくAIの力を少しでも引き出せるよう、AIの力を借りながら今まで以上に学習を加速させ、基本的なアプローチやエコシステム固有の慣習の原理を把握し、AIとディスカッションできる最低限の土台を自分が持つことだと再認識しました。
おわりに
React Native (Expo) で Firebase Storage への画像アップロードで [storage/unknown]
エラーに遭遇した場合は、使用している画像ピッカーライブラリを見直してみてください。特に react-native-image-picker
を使用している場合は、expo-image-picker
への変更を検討することをおすすめします。
この記事が、同様の問題で困っている方の一助となれば幸いです。
Discussion