【问题标题】:Cordova plugin restore failureCordova 插件恢复失败
【发布时间】:2018-05-29 10:20:40
【问题描述】:

最近,尽管我没有进行任何更改,但我的应用程序的 Cordova 插件恢复已开始失败。我绝对在config.xmlpackage.json 中指定我的版本,没有插入符号或其他修饰符以允许安装我指定版本以外的替代版本。我不知道是什么导致它突然中断,我不明白发生的错误。这是一个相关错误示例的片段,从 config.xml 指定的插件开始:

Discovered plugin "cordova-plugin-code-push" in config.xml. Adding it to the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-code-push@1.10.1"
Running command: npm install cordova-plugin-code-push@1.10.1 --production --no-save
Command finished with error code 0: npm install,cordova-plugin-code-push@1.10.1,--production,--no-save
Copying plugin "/Users/distiller/BallStreetApp/node_modules/cordova-plugin-code-push" => "/Users/distiller/BallStreetApp/plugins/cordova-plugin-code-push"
Calling plugman.install on plugin "/Users/distiller/BallStreetApp/plugins/cordova-plugin-code-push" for platform "ios
Installing "cordova-plugin-code-push" for ios
Running command: /Users/distiller/BallStreetApp/platforms/ios/cordova/version 
Command finished with error code 0: /Users/distiller/BallStreetApp/platforms/ios/cordova/version 
Dependencies detected, iterating through them...
Requesting plugin "code-push@2.0.4".
Plugin dependency "code-push" not fetched, retrieving then installing.
Running command: npm install code-push@2.0.4 --production --no-save
Command finished with error code 0: npm install,code-push@2.0.4,--production,--no-save
Copying plugin "/Users/distiller/BallStreetApp/node_modules/code-push" => "/Users/distiller/BallStreetApp/plugins/code-push"
Installing "code-push" for ios
Finding scripts for "before_plugin_install" hook from plugin code-push on ios platform only.
No scripts found for hook "before_plugin_install".
Install start for "code-push" on ios.
Beginning processing of action stack for ios project...
Action stack processing complete.
Install complete for code-push on ios.
Finding scripts for "after_plugin_install" hook from plugin code-push on ios platform only.
No scripts found for hook "after_plugin_install".
Requesting plugin "cordova-plugin-file@>=4.3.0".
Plugin dependency "cordova-plugin-file" not fetched, retrieving then installing.
Running command: npm install cordova-plugin-file@>=4.3.0 --production --no-save
Command finished with error code 0: npm install,cordova-plugin-file@>=4.3.0,--production,--no-save
Copying plugin "/Users/distiller/BallStreetApp/node_modules/cordova-plugin-file" => "/Users/distiller/BallStreetApp/plugins/cordova-plugin-file"
Installing "cordova-plugin-file" for ios
Finding scripts for "before_plugin_install" hook from plugin cordova-plugin-file on ios platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-file" on ios.
Beginning processing of action stack for ios project...
Action stack processing complete.
Install complete for cordova-plugin-file on ios.
Finding scripts for "after_plugin_install" hook from plugin cordova-plugin-file on ios platform only.
No scripts found for hook "after_plugin_install".
Requesting plugin "cordova-plugin-file-transfer@>=1.3.0".
Plugin dependency "cordova-plugin-file-transfer" not fetched, retrieving then installing.
Running command: npm install cordova-plugin-file-transfer@>=1.3.0 --production --no-save
Command finished with error code 0: npm install,cordova-plugin-file-transfer@>=1.3.0,--production,--no-save
Copying plugin "/Users/distiller/BallStreetApp/node_modules/cordova-plugin-file" => "/Users/distiller/BallStreetApp/plugins/cordova-plugin-file"
Failed to install 'cordova-plugin-code-push': Error: Expected plugin to have ID "cordova-plugin-file-transfer" but got "cordova-plugin-file".
    at checkID (/Users/distiller/BallStreetApp/node_modules/cordova-lib/src/plugman/fetch.js:215:15)
    at /Users/distiller/BallStreetApp/node_modules/cordova-lib/src/plugman/fetch.js:199:9
    at _fulfilled (/Users/distiller/BallStreetApp/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done (/Users/distiller/BallStreetApp/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch (/Users/distiller/BallStreetApp/node_modules/q/q.js:749:13)
    at /Users/distiller/BallStreetApp/node_modules/q/q.js:557:44
    at flush (/Users/distiller/BallStreetApp/node_modules/q/q.js:108:17)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
Failed to restore plugin "cordova-plugin-code-push" from config.xml. You might need to try adding it again. Error: Error: Expected plugin to have ID "cordova-plugin-file-transfer" but got "cordova-plugin-file".

我不确定它是如何混淆并开始尝试寻找一个包,而它显然是在尝试安装另一个包。

这是在 Cordova 7.1 上,但我也尝试短暂升级到 Cordova 8 以查看它是否解决了问题。 (它没有。)

我为 Ionic 标记了问题。我没有使用 Ionic,但因为如果我通过 Ionic 工具集进行恢复,可能会发生相同的错误,因为它是 Cordova 的薄包装。

【问题讨论】:

    标签: cordova ionic-framework ionic2 ionic3 cordova-plugins


    【解决方案1】:

    这似乎已在 cordova-plugin-code-push 的 v1.11.11 中得到修复(请参阅 PR #411)。请注意,如果您有 NPM v5.x 或更高版本,您可能还需要删除或手动更新 package-lock.json 文件中的 cordova-plugin-code-push 记录。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      相关资源
      最近更新 更多