什么是cordova_plugins.json文件? Cordova在初始化时请求它

时间:2013-04-19 01:22:22

标签: cordova phonegap-plugins

我正在尝试调试cordova_plugins.json文件用于什么?

到目前为止,我使用多个插件,我从未与此文件进行过互动。我想弄清楚为什么cordova在初始化时会对此文件发出xhr请求。

在查看我的控制台时,每次我在Chrome中测试我的应用时都会看到这个404错误,并且想了解为什么需要这个文件。

8 个答案:

答案 0 :(得分:14)

这似乎是Cordova 2.6.0中引入的功能,至少我在这个版本中注意到了。 在这一点上,我找不到任何文档,我没有很多细节,但是现在我解决了404问题,在我的项目的根目录中添加了一个虚拟的cordova_plugins.json文件。

由于它需要一个有效的json文件,我在文件中添加了以下内容:“只是Cordova 2.6.0所需的虚拟文件”

答案 1 :(得分:11)

这似乎是所讨论的已知问题:here

创建一个虚拟的json文件并没有解决我的问题......的确,在cordova-2.7.0.js的末尾删除了整个代码块

// Try to XHR the cordova_plugins.json file asynchronously.
try { // we commented we were going to try, so let us actually try and catch
    var xhr = new context.XMLHttpRequest();
    xhr.onload = function() {
        // If the response is a JSON string which composes an array, call handlePluginsObject.
        // If the request fails, or the response is not a JSON array, just call finishPluginLoading.
        var obj = this.responseText && JSON.parse(this.responseText);
        if (obj && obj instanceof Array && obj.length > 0) {
            handlePluginsObject(obj);
        } else {
            finishPluginLoading();
        }
    };
    xhr.onerror = function() {
        finishPluginLoading();
    };
    xhr.open('GET', 'cordova_plugins.json', true); // Async
    xhr.send();
}
catch(err){
    finishPluginLoading();
}

并通过调用finishPluginLoading()替换它将解决问题。

答案 2 :(得分:9)

Adob​​e的Filip Maj在其他地方已经说过,这是(到目前为止)部分实现的插件工具。在Cordova的未来版本中,插件工具将自行生成cordova_plugins.json。

目前,他已经说完全忽略了404错误。如果您认为它影响了您的应用程序,您应该向Cordova提交错误。

[请注意,如果您自己添加虚拟文件,可能会影响插件的集成]

答案 3 :(得分:6)

我确认了弗朗西斯的答案,并注意到2.7如果插入了一个虚拟文件,有时它会在错误“processMessage failed:invalid message:”(line cordova-2.7.0.js:971)上启动无限循环。保持404错误似乎确实更安全。 (参考:https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw

答案 4 :(得分:2)

该文件确实代表了以前版本的Cordova / PhoneGap中的错误/松散结束 - 而nurieta的建议修复确实解决了在其缺席时抛出的(无害)错误。此文件的后续版本现在由Cordova/PhoneGap CLI完全创建和处理,位于/myapp/platforms/#platform#/www/cordova_plugins.js

底线 - 尽管文件sorta仍然存在,但这已不再是Cordova 3.0的问题。

答案 5 :(得分:1)

我实际上将这个文件模拟为一个空的json文件,其内容为:“{}”和 - 使用cordova 2.6-这似乎可以解决问题。没有一个丑陋的404和科尔多瓦似乎工作得很好。

编辑:您可以从cordova中删除一起执行ajax请求的代码,事情就可以了。

答案 6 :(得分:0)

您可以找到有关它的更多信息here

SDK / XDK中的位置如下:xdk-new \ xdk \ components \ server \ emulator \ resources \ cordova_plugins.json

答案 7 :(得分:-2)

您使用的是Sencha Touch吗?

您可以忽略该错误,但如果您想要为iOS打包应用程序,您将无法做到。我回到cordova-2.5.0.js解决了这个问题。