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

ionic - adding plugin fails because it already exists, removing plugin fails because it doesn't exist

我知道如何搞砸我的 Ionic 项目...非常感谢您的帮助。

我正在尝试添加 cordova-plugin-camera 所以我正在做的是:

$ cordova plugin add cordova-plugin-camera 这个 returns 一个错误:

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

然后将其添加回来似乎工作正常,因为它 returns:

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

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

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

在你走这么远之前,你

  • 删除 node_modules 文件夹
  • 删除平台文件夹
  • 编辑 config.xml 并删除平台条目
  • npm i
  • ionic cordova 平台添加 android

"smaller messups"可以这样修正