我正在尝试调试cordova_plugins.json文件用于什么?
到目前为止,我使用多个插件,我从未与此文件进行过互动。我想弄清楚为什么cordova在初始化时会对此文件发出xhr请求。
在查看我的控制台时,每次我在Chrome中测试我的应用时都会看到这个404错误,并且想了解为什么需要这个文件。
答案 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)
Adobe的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解决了这个问题。