如果我试试
cordova plugin rm cordova-plugin-compat
我得到以下错误
[ERROR] An error occurred while running cordova plugin remove
cordova-plugin-compat –save (exit code 1):Error: The plugin ‘cordova-plugin-compat’ is required by
(cordova-plugin-calendar, cordova-plugin-camera, cordova-plugin-file,
cordova-plugin-geolocation), skipping uninstallation. (try –force if
trying to update)
如果我然后尝试 – 强制删除,它工作,插件被删除,我能够构建我的Android应用程序.
但是,我刚刚删除了我的iOS平台再次添加它,我现在面对错误
cordova prepare ios Error: Cannot find plugin.xml for plugin “cordova-plugin-compat”. Please try adding it again.
[ERROR] An error occurred while running cordova prepare ios (exit code
1).
知道我做错了什么吗?应该删除真的cordova-plugin-compat吗?为什么我的iOS平台引用它,我以为它只适用于Android?
我使用cordova-android@6.3.0和cordova-ios@4.5.1
P.S.:如果我删除并添加iOS平台,compat插件会自动添加为package.json和package-lock.json中的参考
UPDATE
最后一个插件发布(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:
Error: The plugin ‘cordova-plugin-compat’ is required by
(cordova-plugin-calendar, cordova-plugin-camera, cordova-plugin-file,
cordova-plugin-geolocation), skipping uninstallation. (try –force if
trying to update)
更新以下插件解决了我的问题:
cordova-plugin-camera@3.0.0,cordova-plugin-file@5.0.0和cordova-plugin-geolocation@3.0.0删除了依赖关系(见https://cordova.apache.org/news/2017/11/10/plugins-release.html)
cordova-plugin-calendar@5.0.0通过此PR删除了依赖关系
https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin/pull/430