1. ホーム
  2. cordova

Cordova のエラー。requireCordovaModule" を使って非コードバモジュール "q" を読み込むことはサポートされていません。

2023-12-04 15:58:45

質問

CI上のビルドが以下のエラーのために失敗するようになったことに気づきました。

Discovered plugin "cordova-plugin-app-version" in config.xml. Adding it to the project

Installing "cordova-plugin-app-version" for android

Adding cordova-plugin-app-version to package.json
Using "requireCordovaModule" to load non-cordova module "q" is not supported. Instead, add this module to your dependencies and use regular "require" to load it.
[ERROR] Exception: 
The command '/bin/sh -c ionic cordova platforms add android' returned a non-zero code: 1

iOSとAndroidの両方で同じ問題が発生します。

いろいろ調べた結果 cordova 9.0.0 が最近リリースされたことがわかりました。

この問題に関連するいくつかの変更があります。

  • GH-710 Q 依存性を排除し、ネイティブなプロミスを使用する
  • GH-707 非 Cordova モジュール用の requireCordovaModule の廃止

最初に思ったのは、どういうわけかコードバのバージョンをロックしていなかったということでしたが、ロックしていたのは [email protected] にロックしています。また、ローカルマシンでテストしてみたところ、cordova のバージョンが 8.1.2 にも対応しています。ですから、これが問題であるはずがありません。

もう少しログを見てみると、以下のようなログがあることに気づきました。

cordova-android version check failed ("/app/platforms/android/cordova/version"), continuing anyways.

それが3、4回ほどありましたが、その際もビルドは止まりませんでした。

その後、古いコミットのビルドを再度実行したところ、おそらくいくつかのレイヤーがキャッシュされたため、うまく動作しました。しかし、1 つのパッケージだけを変更した場合 (試しに prettier を更新しました)、ほとんどのレイヤーを再構築することになり、上記のエラーでビルドがクラッシュしました。

どうやら、より深いところにあるいくつかの依存関係が更新されたようで、それがこの問題を引き起こしているようです。

ご協力ありがとうございました。

どのように解決するのですか?

私もこれに遭遇しました。私の場合、問題のあるプラグインを削除する必要がありました。 cordova-plugin-camera-preview をリストする "cordova": "*" を依存関係としてリストアップしています。この場合、cordova 9.0.0 をインストールする際に ionic cordova build