代码之家  ›  专栏  ›  技术社区  ›  Simon

离子-添加插件失败,因为它已经存在,删除插件失败,因为它不存在。

  •  2
  • Simon  · 技术社区  · 6 年前

    我有一些办法把我的离子工程搞砸了…我们将非常感谢您的帮助。

    我想补充一下 cordova-plugin-camera 所以我要做的是:

    $ cordova plugin add cordova-plugin-camera 这将返回一个错误:

    Installing "cordova-plugin-camera" for android
    Android Studio project detected
    Error during processing of action! Attempting to revert...
    Failed to install 'cordova-plugin-camera': CordovaError: Uh oh!
    "C:\xampp\htdocs\project x\anonymous-social\platforms\android\app\src\main\res\xml\camera_provider_paths.xml" already exists!
        at copyNewFile (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\lib\pluginHandlers.js:261:45)
        at install (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\lib\pluginHandlers.js:51:17)
        at ActionStack.process (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\ActionStack.js:56:25)
        at PluginManager.doOperation (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\PluginManager.js:114:20)
        at PluginManager.addPlugin (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\PluginManager.js:144:17)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\Api.js:247:74
        at _fulfilled (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:854:54)
        at self.promiseDispatch.done (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:883:30)
        at Promise.promise.promiseDispatch (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:816:13)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:570:49
    (node:26116) UnhandledPromiseRejectionWarning: CordovaError: Uh oh!
    "C:\xampp\htdocs\project x\anonymous-social\platforms\android\app\src\main\res\xml\camera_provider_paths.xml" already exists!
        at copyNewFile (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\lib\pluginHandlers.js:261:45)
        at install (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\lib\pluginHandlers.js:51:17)
        at ActionStack.process (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\ActionStack.js:56:25)
        at PluginManager.doOperation (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\PluginManager.js:114:20)
        at PluginManager.addPlugin (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\PluginManager.js:144:17)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\Api.js:247:74
        at _fulfilled (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:854:54)
        at self.promiseDispatch.done (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:883:30)
        at Promise.promise.promiseDispatch (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:816:13)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:570:49
    (node:26116) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
    (node:26116) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    

    既然它似乎存在,我不妨尝试移除它:

    $ cordova plugin rm cordova-plugin-camera 然后告诉我:

    > cordova plugin remove cordova-plugin-camera --save
    Uninstalling cordova-plugin-camera from android
    
    Android Studio project detected
    
    (node:18656) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'C:\xampp\htdocs\project x\anonymous-social\platforms\android\app\src\main\assets\www\cordova_plugins.js'
        at Object.fs.openSync (fs.js:646:18)
        at Object.fs.writeFileSync (fs.js:1299:33)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\cordova-common\src\PluginManager.js:134:16
        at _fulfilled (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:854:54)
        at self.promiseDispatch.done (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:883:30)
        at Promise.promise.promiseDispatch (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:816:13)
        at C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:877:14
        at runSingle (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:137:13)
        at flush (C:\xampp\htdocs\project x\anonymous-social\platforms\android\cordova\node_modules\q\q.js:125:13)
        at _combinedTickCallback (internal/process/next_tick.js:131:7)
    (node:18656) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
    (node:18656) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    

    在这一点上,我认为我的 Android 平台,因此我移除平台:

    $ cordova platform remove android --save
    Removing platform android from config.xml file...
    Removing android from cordova.platforms array in package.json
    

    然后再把它加回去,看起来效果很好:

    --save flag or autosave detected
    Saving android@~7.0.0 into config.xml file ...
    

    有人知道发生了什么事吗?我的Android平台似乎有点混乱,因为其他插件也在做同样的事情…有什么帮助吗?谢谢您!

    1 回复  |  直到 6 年前
        1
  •  3
  •   simirimia    6 年前

    几周前我也遇到过类似的问题。在几个月的时间里,我向这个项目添加了插件,由于每个插件都存储有其确切的版本号,我最终陷入了一堆不兼容的插件版本中。 最后,我从一个空项目开始,添加了我需要的所有插件,然后将源代码复制到这个项目中。 不是一个好的解决方案,但对我来说是有效的。

    在你走这么远之前,是吗?

    • 删除节点模块文件夹
    • 删除平台文件夹
    • 编辑config.xml并删除平台条目
    • NPMⅠ
    • 爱奥尼亚科多瓦平台添加安卓

    “小混乱”可以用这种方法来纠正。