Я заметил, что сборки нашего 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 Устаревать requireCordovaModule для не-Cordova модулей
Моей первой мыслью было, что почему-то у нас не было заблокированной версии Cordova, но мы заблокировали ее по [email protected]
в нашем файле Docker. Я также проверил это на моей локальной машине, и я Cordova версии 8.1.2
а также. Так что это не может быть проблемой.
Посмотрев еще несколько журналов, я заметил несколько таких журналов:
cordova-android version check failed ("/app/platforms/android/cordova/version"), continuing anyways.
Было несколько таких, как 3 или 4, но сборка не остановилась, когда это произошло.
Затем я снова запустил сборку старого коммита, и он работал нормально, возможно потому, что некоторые слои были кэшированы. Но если я изменил только один пакет (я обновил более красивый, чтобы попробовать его), это привело к перестроению большинства слоев, и сборка завершилась с ошибкой, описанной выше.
Кажется, что каким-то образом обновились некоторые зависимости, которые вызывают проблему.
Спасибо за вашу помощь.