我正在尝试调试 cordova_plugins.json 文件的用途?
到目前为止,我正在使用多个插件,并且从未与此文件进行过交互。我想弄清楚为什么cordova 在初始化时对该文件发出 xhr 请求。
在查看我的控制台时,每次我在 Chrome 中测试我的应用程序时都会看到这个 404 错误,并且想了解为什么需要这个文件。
我正在尝试调试 cordova_plugins.json 文件的用途?
到目前为止,我正在使用多个插件,并且从未与此文件进行过交互。我想弄清楚为什么cordova 在初始化时对该文件发出 xhr 请求。
在查看我的控制台时,每次我在 Chrome 中测试我的应用程序时都会看到这个 404 错误,并且想了解为什么需要这个文件。
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"
似乎这是一个讨论过的已知问题: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() 的调用将解决问题。
Adobe 的 Filip Maj 在其他地方表示,这是由于(到目前为止)部分实现了插件工具。在 Cordova 的未来版本中,插件工具将自己生成 cordova_plugins.json。
目前,他说完全忽略 404 错误是有好处的。如果您觉得它影响了您的应用程序,您应该向 Cordova 提交错误。
[注意,如果你自己添加一个dummy文件,可能会影响Plugins的集成]
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)
该文件确实代表了以前版本的 Cordova/PhoneGap 中的一个错误/松散的结局——并且 nurieta 建议的修复确实解决了在其缺席时引发的(无害的)错误。该文件的后继文件现在完全由Cordova/PhoneGap CLI创建和处理,位于 /myapp/platforms/#platform#/www/cordova_plugins.js
底线 - 尽管文件排序仍然存在,但从 Cordova 3.0 开始,这不再是问题。
我实际上将此文件模拟为一个空的 json 文件,其内容是:“{}”并且 - 使用 cordova 2.6 - 这似乎可以解决问题。没有丑陋的 404,cordova 似乎工作正常。
编辑:您可以从cordova中删除执行ajax请求的代码,一切都会正常工作。
您可以在此处了解更多信息。
SDK/XDK 中的位置如:xdk-new\xdk\components\server\emulator\resources\cordova_plugins.json
你在用煎茶触摸吗?
您可以忽略该错误,但如果您想为 iOS 打包应用程序,您将无法做到。我通过返回 cordova-2.5.0.js 解决了这个问题。