2013-04-19 56 views

回答

14

這似乎是Cordova 2.6.0中引入的一個功能,至少我在這個版本中已經注意到了。 在這一點上,我找不到任何文件,我沒有很多細節,但現在我解決了404問題,添加一個虛擬cordova_plugins.json文件到我的項目的根目錄。

由於預計添加以下內容到文件的有效JSON文件:「只是科爾多瓦需要一個虛擬文件2.6.0」

+1

完全爲我工作。 – mark

+2

還在尋找答案,這是什麼文件... –

9

的Adobe的菲利普少校在其他地方也說,這是因爲(這樣遠)部分實現的插件工具。在未來的Cordova版本中,插件工具會自動生成cordova_plugins.json。

現在,他表示完全忽略了404錯誤是保存的。如果您覺得它會影響您的應用程序,那麼您應該向Cordova提交一個錯誤。

[請注意,如果你自己添加一個虛擬文件,它可能會影響插件的整合]

+0

謝謝,喬治的宗旨! – Rustavore

+0

嘿,有人驗證過,如果在剛剛發佈的2.8.0中這個問題解決了嗎? – netalex

6

我確認弗朗西斯回答,如果一個虛擬文件插入會注意,在2.7,有時它開始一個無限循環在錯誤「processMessage失敗:無效消息:」(line cordova-2.7.0.js:971)。保持404錯誤似乎確實更安全。 (ref:https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw

+2

爲了擺脫無限循環的,我不得不從我的index.html文件中刪除

11

看來,這是作爲一個討論的已知問題:here

創建一個虛擬的JSON文件並沒有解決我這個問題......事實上,在科爾多瓦 - 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()來代替它將解決問題。

+0

你能使你的答案更清楚一點不WEL瞭解,更換'finishPluginLoading '在哪裏以及如何。你可以說得更詳細點嗎 ? –

+1

@LaliPali,這很清楚。刪除整段代碼並用finishPluginLoading()替換它; – Danation

+0

原因之一創建一個虛擬cordova_plugins.json不起作用,至少在IIS 7 +,是你必須將MIME類型映射明確添加到IIS,否則會阻止請求。 –

1

我實際上把這個文件作爲一個空的json文件來模擬,其內容是:「{}」和-using cordova 2.6-似乎解決了問題。沒有一個醜陋的404和科爾多瓦似乎工作得很好。

編輯:你可以刪除從cordova一起做ajax請求的代碼,而且事情會很好地工作。

0

你可以找到更多關於它here

SDK/XDK中的位置如下所示:xdk-new \ xdk \ components \ server \ emulator \ resources \ cordova_plugins。JSON

2

該文件確實代表科爾多瓦/ PhoneGap的以前版本中的錯誤/鬆結束 - 和nurieta的修復建議並解決它的缺失引發的(無害)錯誤。這個文件的後繼現在完全由Cordova/PhoneGap CLI創建和處理,並駐留在/myapp/platforms/#platform#/www/cordova_plugins.js

底線 - 儘管文件sorta存在仍然不再是一個問題如科爾多瓦3.0。