在cordova-android 6.3.0(https://cordova.apache.org/announcements/2017/09/27/android-release.html)的发行说明中,记录了
cordova-plugin-compat
必须被删除
如果我尝试
cordova plugin rm cordova-plugin-compat
我收到以下错误
[错误] 运行cordova插件删除时发生错误 cordova-plugin-compat --save (退出代码 1):
错误:需要插件“cordova-plugin-compat” (科尔多瓦插件日历,科尔多瓦插件相机,科尔多瓦插件文件, cordova-plugin-geolocation),跳过卸载。 (尝试--force如果 正在尝试更新)
如果我尝试
--force
删除,它会起作用,插件被删除,我可以构建我的 Android 应用程序。
但是,我刚刚删除了我的
iOS
平台并再次添加它,我现在面临错误
cordova 准备 ios 错误:找不到插件“cordova-plugin-compat”的plugin.xml。请尝试重新添加。
[ERROR] 运行 cordova prepare ios 时发生错误(退出代码 1).
知道我做错了什么吗?真的应该删除
cordova-plugin-compat
吗?为什么我的iOS平台引用了它,我以为它只适用于android?
P.S.:如果我删除并添加 iOS 平台,compat 插件会自动添加为 package.json 和 package-lock.json 中的参考
更新
最后一个插件版本(https://cordova.apache.org/news/2017/11/10/plugins-release.html)最有可能分别解决这个问题,看起来问题是对
的引用来自其他插件的cordova-plugin-compat
插件。但是,
我还无法完全测试它并解决它,因为我正在使用另一个插件,其中也引用了 compat (https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin/issues/426)。
我将保持此线程打开,直到我可以 100% 确认这解决了 compat 的引用。
最终更新
删除从
Calendar-PhoneGap-Plugin
到“cordova-plugin-compat”的依赖关系的 PR 已经通过,我能够在不“强制”的情况下删除最后一个插件
问题的根源在于插件直接引用了
cordova-plugin-compat
。
因此,即使该插件的使用已被弃用,但它仍然是需要的。强制删除(使用 --force)不是一个解决方案,因为如果我再次删除并添加平台,那么,由于这些引用,插件“cordova-plugin-compat”会在该过程中再次自动添加。
问题的解决办法就是等待新版本或者提交PR去除依赖。
就我而言,有一些插件正在引用
cordova-plugin-compat
:
错误:需要插件“cordova-plugin-compat” (科尔多瓦插件日历,科尔多瓦插件相机,科尔多瓦插件文件, cordova-plugin-geolocation),跳过卸载。 (尝试--force如果 正在尝试更新)
更新以下插件解决了我的问题:
[email protected]
、[email protected]
和[email protected]
删除了依赖项(请参阅https://cordova.apache.org/news/2017/11/10/plugins-release.html)
[email protected]
通过此 PR 删除了依赖项
https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin/pull/430
对我来说,修复的方法是通过 Android Studio 更新 Android SDK,然后运行:
cordova plugin rm cordova-plugin-compat --force
cordova platform rm android
cordova platform add [email protected]
希望对某人有帮助!
cordova-plugin-compat 仅适用于 Android,因此它不会导致 iOS 错误。我建议尝试清理你的 Cordova 项目。
删除以下目录:plugins、platforms、node_modules。他们将被重新创造
然后执行:
cordova platform add android
cordova platform add ios
cordova prepare # usually made by commands above but juste in case
cordova compile
您可能有另一个需要 compat 插件的插件。检查你的插件的 package.json 来了解这一点。
我对 cordova-plugin-file 有同样的问题,现在有解决方案吗?
https://forum.ionicframework.com/t/cordova-plugin-file-cordova-android-6-3-0-build-error/110682
删除早于1.2版本的插件兼容性
$ cordova plugin rm cordova-plugin-compat --force
然后添加版本1.2
$ cordova plugin add [email protected]
这对我来说效果非常好!