Ошибка Cordova: использование «requireCordovaModule» для загрузки модуля non-cordova «q» не поддерживается - PullRequest
35 голосов
/ 22 марта 2019

Я заметил, что сборки нашего 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 Зависимость и использование NativeОбещания
  • GH-707 Устаревать requireCordovaModule для не-Cordova модулей

Сначала я подумал, что почему-то у нас не была заблокирована наша версия Cordova, но мы заблокировали ее на cordova@8.1.2 в нашем докер-файле.Я также проверил это на своей локальной машине, и у меня есть кордова версия 8.1.2.Так что это не может быть проблемой.

После просмотра журналов я заметил несколько таких журналов:

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

Было несколькотакие, как 3 или 4, но сборка не остановилась, когда это произошло.

Затем я снова запустил сборку старого коммита, и он работал нормально, возможно, потому, что некоторые слои были кэшированы.Но если я изменил только один пакет (я обновил более симпатичный, чтобы попробовать его), это привело к перестроению большинства слоев, и сборка завершилась с указанной выше ошибкой.

Кажется, что некоторые зависимости оказываются глубжеобновлен, что вызывает проблему.

Спасибо за вашу помощь.

Ответы [ 6 ]

58 голосов
/ 24 марта 2019

Я вернулся к предыдущей версии: 8.1.2.

npm install -g cordova@8.1.2

Теперь снова работает.

4 голосов
/ 02 апреля 2019

Кажется, что проблема с cordova 9.0.0, см. Этот билет на выдачу .

Похоже, что он уже исправлен и будет включен в следующую (9.0.1?)релиз.

3 голосов
/ 25 марта 2019

Я столкнулся с этим также. В моем случае мне нужно было удалить проблемный плагин cordova-plugin-camera-preview, который перечисляет "cordova": "*" в качестве зависимости. Это установит Cordova 9.0.0 во время ionic cordova build

2 голосов
/ 02 апреля 2019

Я также получаю эту ошибку после обновления до 9.0.0 . В моем случае я исправил это, выполняя очистку и перестраивая мое приложение. Вы можете попробовать следующие шаги.

Прежде всего

  1. Обновление Cordova: npm install -g cordova
  2. Обновление SDK, например: ./android/tools/bin/sdkmanager "build-tools;28.0.3" "platforms;android-28"
  3. Добавить путь SDK к вашей системе (1), например: в bashrc export ANDROID_SDK_ROOT=~/android

(1) ANDROID_HOME устарел, но все еще работает

В вашем проекте Cordova

  1. Удалить node_modules , платформы и плагины папки
  2. Удалить package.json и package-lock.json
  3. Удалить из config.xml плагины / платформы / движок
  4. Добавьте вашу платформу, например: cordova platform add android
  5. Обновите свои плагины, например: cordova plugin add cordova-plugin-whitelist
  6. Сборка: cordova build

Вы можете проверить резюме вашего приложения с помощью: cordova info

Если вы хотите увидеть список вашего плагина, вы можете использовать: cordova plugins ls

Надеюсь, эта помощь или, по крайней мере, направить кого-то в правильном направлении

0 голосов
/ 08 июля 2019

У меня это решение сработало - https://github.com/xpbrew/cordova-sqlite-storage/issues/856#issuecomment-497298630

Для любого плагина, с которым связана эта ошибка, запустите:

cordova platform rm ios
cordova platform rm android
cordova plugin rm <package-name>

npm i <package-name>@latest
cordova plugin add <package-name>
cordova platform add ios
cordova platform add android
0 голосов
/ 15 апреля 2019

удалить cordova-plugin-crosswalk-webview

...