33

我正在尝试调试 cordova_plugins.json 文件的用途?

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

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

4

8 回答 8

14

It seems like a feature introduced in Cordova 2.6.0, at least I just noticed in this version. At this point I could not find any documentation and I don't have many details on it, but right now I solved the 404 issue adding a dummy cordova_plugins.json file to the root of my project.

As it expects a valid json file I added the following content to the file: "just a dummy file required by Cordova 2.6.0"

于 2013-04-22T04:40:38.990 回答
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() 的调用将解决问题。

于 2013-05-28T02:37:54.763 回答
9

Adobe 的 Filip Maj 在其他地方表示,这是由于(到目前为止)部分实现了插件工具。在 Cordova 的未来版本中,插件工具将自己生成 cordova_plugins.json。

目前,他说完全忽略 404 错误是有好处的。如果您觉得它影响了您的应用程序,您应该向 Cordova 提交错误。

[注意,如果你自己添加一个dummy文件,可能会影响Plugins的集成]

于 2013-05-03T00:27:16.117 回答
6

i confirm francis answer and would note that on 2.7 if a dummy file is inserted, sometimes it starts an infinite loop on error "processMessage failed: invalid message:" (line cordova-2.7.0.js:971). keeping the 404 error seems indeed safer. (ref: https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw)

于 2013-05-20T13:47:44.860 回答
2

该文件确实代表了以前版本的 Cordova/PhoneGap 中的一个错误/松散的结局——并且 nurieta 建议的修复确实解决了在其缺席时引发的(无害的)错误。该文件的后继文件现在完全由Cordova/PhoneGap CLI创建和处理,位于 /myapp/platforms/#platform#/www/cordova_plugins.js

底线 - 尽管文件排序仍然存在,但从 Cordova 3.0 开始,这不再是问题。

于 2013-09-26T15:32:23.307 回答
1

我实际上将此文件模拟为一个空的 json 文件,其内容是:“{}”并且 - 使用 cordova 2.6 - 这似乎可以解决问题。没有丑陋的 404,cordova 似乎工作正常。

编辑:您可以从cordova中删除执行ajax请求的代码,一切都会正常工作。

于 2013-06-13T10:14:25.507 回答
0

您可以在此处了解更多信息。

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

于 2013-09-26T14:09:39.640 回答
-2

你在用煎茶触摸吗?

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

于 2013-05-22T19:25:59.143 回答