【Cordova】「TypeError: doc.find is not a function」エラーの対処法

  • 2020年9月1日
  • iOS

今回は、Cordova アプリを開発中に遭遇した「TypeError: doc.find is not a function」というエラーについてです。

発生状況としては、iOS プラットフォームで開発を行っている最中、プラグインをいくつか追加した際に config.xmlinfo.plist に反映する説明文章を手動で追加し、その後 cordova prepare ios を実行したら発生しました。
追加したコードのサンプルは下記のとおりです。

<edit-config target="NSLocationWhenInUseUsageDescription" file="*-Info.plist" mode="merge">
    <string>need location access to find things nearby</string>
</edit-config>

<edit-config target="NSLocationAlwaysAndWhenInUseUsageDescription" file="*-Info.plist" mode="merge">
    <string>need location access to find things nearby</string>
</edit-config>

上記は、cordova-plugin-geolocation プラグインを追加した際に必要になる、位置情報へのアクセスを許可/拒否を確認するときのダイアログに表示されるメッセージを指定しています。
なお、<string> タグ内のメッセージは適宜変更してください。
こちらを config.xml に追加後、プロジェクトを prepare したところ、今回のエラーが発生しました。

で、エラーメッセージだけでは何が原因で、どう直していいか分からなかったので調べたところ、下記の記事がヒットしました。

TypeError: doc.find is not a function – Qiita
https://qiita.com/mokkos/items/10cd36a920fda7e233bd

 

こちらの参考記事によると、プラットフォームを削除して再度追加するだけで解消できるとのことでした。
Xcode で開いているプロジェクトを閉じた後、ターミナルソフトで下記のコマンドを実行しました。

// iOS プラットフォーム削除
cordova platforms rm ios
// iOS プラットフォーム追加
cordova platforms add ios

そして再度 cordova prepare ios を実行したところ、問題なく実行できました!
また、Xcode でプロジェクト開いてみたところ、info.plistconfig.xml で指定したメッセージが反映されていました。
原因は分かりませんが、info.plist への説明文書の反映で失敗していたのが原因のようでした。

 

以上、Cordova アプリ開発中に遭遇した「TypeError: doc.find is not a function」エラーの対処法についてでした。
例外はありますが、Cordova でアプリを開発中に、原因不明のエラーに遭遇したら一度プラットフォームを削除して再追加する!というのはかなり有力なエラー解決方法ですね。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG