2013-04-19 10 views
33

Sto tentando di eseguire il debug per che cosa viene utilizzato il file cordova_plugins.json?Per che cosa è il file cordova_plugins.json? Cordova lo sta richiedendo all'inizializzazione

Attualmente utilizzo più plug-in e non ho mai interagito con questo file. Voglio capire perché cordova fa una richiesta xhr per questo file all'inizializzazione.

Quando guardo la mia console continuo a vedere questo errore 404 ogni volta che eseguo il test della mia app in Chrome e mi piace capire perché questo file è necessario.

risposta

14

Sembra una funzionalità introdotta in Cordova 2.6.0, almeno ho appena notato in questa versione. A questo punto non sono riuscito a trovare alcuna documentazione e non ho molti dettagli su di esso, ma in questo momento ho risolto il problema 404 aggiungendo un file cordova_plugins.json fittizio alla radice del mio progetto.

Come si aspetta un file JSON valida ho aggiunto il seguente contenuto nel file: "solo un file fittizio richiesto da Cordova 2.6.0"

+1

Ha funzionato perfettamente per me. – mark

+2

Ancora cercando la risposta a qual è lo scopo di questo file ... –

9

Filip Maj di Adobe ha detto altrove che ciò è dovuto a (così lontano) strumenti di plugin parzialmente implementati. Nelle future versioni di Cordova, lo strumento di plugin genererà cordova_plugins.json stesso.

Per ora, ha detto che è possibile ignorare completamente l'errore 404. Se ritieni che stia influenzando la tua applicazione, dovresti presentare un bug a Cordova.

[Si noti che se si aggiunge un file fittizio da soli, può influenzare l'integrazione di plugin]

+0

Grazie, George! – Rustavore

+0

ehi, qualcuno ha verificato se nella versione 2.8.0 appena rilasciata questo problema è stato risolto? – netalex

6

io confermo Francesco risposta e far notare che in data 2.7, se viene inserito un file fittizio, a volte si inizia un ciclo infinito in caso di errore "processMessage failed: messaggio non valido:" (line cordova-2.7.0.js: 971). mantenere l'errore 404 sembra davvero più sicuro. (riferimento: https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw)

+2

Per eliminare il ciclo infinito, ho dovuto rimuovere l'inclusione del file cordova-2.7.0.js dal mio file index.html dal numero

11

Sembra questo è un problema conosciuto come discusso: here

Creazione di un file JSON fittizio non ha risolto il problema per me ... In effetti, rimuovere l'intero pezzo di codice alla fine di 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(); 
} 

e sostituirlo con una chiamata per finirePluginLoading() risolverà il problema.

+0

Puoi rendere la tua risposta un po 'più chiara, non è stata compresa, sostituisci 'finishPluginLoading 'dove, e come. Può essere più preciso ? –

+1

@LaliPali, è abbastanza chiaro. Elimina l'intera sezione del codice e sostituiscila con finishPluginLoading(); – Danation

+0

Una ragione per la creazione di un dummy cordova_plugins.json non funziona, almeno su IIS 7 +, è che devi esplicitamente aggiungere il mapping di tipo MIME a IIS, altrimenti bloccherà la richiesta. –

1

Realizzo questo file come un file JSON vuoto il cui contenuto è: "{}" e -utilizzando cordova 2.6- che sembra risolvere i problemi. Non c'era un brutto 404 e la cordova sembrava funzionare bene.

Modifica: è possibile eliminare il codice che richiede ajax tutti insieme da Cordova e le cose funzionerebbero bene.

0

Potete saperne di più su di esso here.

La posizione nell'SDK/XDK è simile a: xdk-new \ xdk \ components \ server \ emulator \ resources \ cordova_plugins.json

2

Quel file rappresentava un bug/loose nelle versioni precedenti di Cordova/PhoneGap e la soluzione suggerita da nurieta risolveva l'errore (innocuo) generato in sua assenza. Il successore di questo file è ora creato e gestito dallo Cordova/PhoneGap CLI interamente e risiede in /myapp/platforms/#platform#/www/cordova_plugins.js

Bottom line - anche se il file sorta esiste ancora questo non è più un problema a partire da Cordova 3.0.

Problemi correlati