【发布时间】:2019-03-22 16:33:48
【问题描述】:
我注意到由于以下错误,我们的 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 依赖并使用原生 Promise
- GH-707 弃用非 Cordova 模块的 requireCordovaModule
我的第一个想法是不知何故我们没有锁定我们的科尔多瓦版本,但我们确实在我们的 dockerfile 中将其锁定为cordova@8.1.2。我还在我的本地机器上测试了它,我也在科尔多瓦版本8.1.2 上进行了测试。所以这不是问题。
在查看了一些日志之后,我注意到了一些类似这样的日志:
cordova-android version check failed ("/app/platforms/android/cordova/version"), continuing anyways.
有几个,比如 3 个或 4 个,但构建并没有在发生时停止。
然后我再次运行旧提交的构建,它工作正常,可能是因为缓存了一些层。但是如果我只更改了一个包(我更新了 prettier 来尝试一下),它会导致大部分层被重新构建,并且构建崩溃并出现上述错误。
似乎以某种方式更新了一些更深层的依赖项,这导致了问题。
感谢您的帮助。
【问题讨论】: