33 votes

À quoi sert le fichier cordova_plugins.json ? Cordova le demande à l'initialisation

J'essaie de déboguer à quoi sert le fichier cordova_plugins.json ?

J'utilise plusieurs plugins jusqu'à présent et je n'ai jamais interagi avec ce fichier. Je veux comprendre pourquoi Cordova fait une demande xhr pour ce fichier à l'initialisation.

En regardant ma console, je vois cette erreur 404 à chaque fois que je teste mon application dans Chrome et j'aimerais comprendre pourquoi ce fichier est nécessaire.

14voto

Felipe Plets Points 148

Il semble que ce soit une fonctionnalité introduite dans Cordova 2.6.0, du moins je viens de le remarquer dans cette version. Pour l'instant, je n'ai pas pu trouver de documentation et je n'ai pas beaucoup de détails à ce sujet, mais pour l'instant j'ai résolu le problème du 404 en ajoutant un fichier fictif cordova_plugins.json à la racine de mon projet.

Comme il s'attend à un fichier json valide, j'ai ajouté le contenu suivant au fichier : "juste un fichier factice requis par Cordova 2.6.0"

11voto

Etienne Desgagné Points 1075

Il semble qu'il s'agisse d'un problème connu, comme cela a été discuté : aquí

La création d'un fichier json factice n'a pas résolu le problème pour moi... En effet, supprimez tout ce morceau de code à la fin de 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();
}

et le remplacer par un appel à finishPluginLoading() résoudra le problème.

9voto

Francis Points 686

Filip Maj, d'Adobe, a déclaré ailleurs que cela était dû à la mise en œuvre partielle (jusqu'à présent) des outils pour les plugins. Dans les futures versions de Cordova, l'outil de création de plugins générera lui-même cordova_plugins.json.

Pour l'instant, il a déclaré qu'il était possible d'ignorer complètement l'erreur 404. Si vous pensez que cela affecte votre application, vous devez déposer un bug auprès de Cordova.

[Notez que si vous ajoutez vous-même un fichier factice, cela peut affecter l'intégration des plugins.]

6voto

netalex Points 96

Je confirme la réponse de francis et je voudrais noter que sur la version 2.7, si un fichier factice est inséré, il arrive qu'il démarre une boucle infinie sur l'erreur "processMessage failed : invalid message :" (ligne cordova-2.7.0.js:971). garder l'erreur 404 semble en effet plus sûr. (réf : https://groups.google.com/forum/?fromgroups#!topic/phonegap/slbvvtEw0aw )

2voto

Chris Emerson Points 88

Ce fichier représentait un bogue/une erreur dans les versions précédentes de Cordova/PhoneGap - et la correction suggérée par nurieta a résolu l'erreur (inoffensive) lancée en son absence. Le successeur de ce fichier est maintenant créé et géré par la fonction CLI Cordova/PhoneGap entièrement et réside dans /myapp/platforms/#platform#/www/cordova_plugins.js

En résumé, bien que le fichier existe toujours, ce problème n'existe plus depuis Cordova 3.0.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X