web-dev-qa-db-fra.com

Erreur dans l'application Phonegap: le module Uncaught cordova / plugin_list est déjà défini

J'ai essayé de résoudre de nombreux problèmes après la mise à jour de Phonegap 2 vers Phonegap 3.3 mais je n'arrive pas à résoudre celui-ci.

J'ai lu par certains utilisateurs que les exceptions de module non capturées peuvent empêcher les plugins importés de fonctionner. J'ai quelques bugs étranges avec un plugin de notification local, donc je voudrais résoudre ce problème et voir si cela aide.

Voici l'erreur telle qu'elle apparaît dans logcat dans Eclipse:

[INFO:CONSOLE(79)] "Uncaught module cordova/plugin_list already defined", source: file:///Android_asset/www/cordova.js (79)

Je sais que c'est un problème étrange découlant de la nature de Phonegap 3 (les plugins ont été retravaillés). Et je pense que le problème réside dans l'importation d'un script cordova_plugins.js comme la ligne supérieure de ce script se lit comme suit:

cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
    "file": "plugins/org.Apache.cordova.file/www/DirectoryEntry.js",
    "id": "org.Apache.cordova.file.DirectoryEntry",
    "clobbers": [
        "window.DirectoryEntry"
    ]
}, ...

Et c'est le seul endroit où je peux trouver l'existence de cordova/plugin_list comme référencé dans l'erreur.

Cependant, je ne suis pas sûr de la bonne façon de résoudre ce problème. Je n'ai pas utilisé plugman pour importer mes plugins, mais plutôt les commandes CLI décrites dans l'API Phonegap 3.3

22
Gthoma2

Une des causes de ce problème est l'importation de cordova_plugins.js dans votre fichier html.

Vérifiez si c'est le cas pour vous et retirez-le.

22
grytrn

Le fichier cordova.js charge automatiquement cordova_plugins.js.

Donc, une autre façon évidente de se retrouver avec cette erreur est de mettre par inadvertance le code suivant deux fois sur votre page.

<script type="text/javascript" src="cordova.js"></script> 

J'ai perdu des heures sur cette même erreur pour me rendre compte que j'avais ajouté cordova.js en haut et en bas de la page.

16
elMarquis