Exception "Exiger" dans le projet Cordova / phonegap

J'essaie de créer une application mobile hybride utilisant Phonegap / Cordova dans la plate-forme Android. Et j'ai réussi à cela aussi 🙂 L'application fonctionne comme souhaité dans l'émulateur Ripple dans mon navigateur Chrome. Je n'utilise pas Eclipe ADT ou Android Studio alors que l'émulateur ne se charge pas rapidement.

J'ai utilisé onDeviceReady événement et navigateur plugin pour vibrer et les alertes. Tous ces travaux fonctionnent comme prévu.

Lorsque la Console de développeur est active sur Chrome, le JavaScript se casse dans cordova.js avec l'erreur suivante

Uncaught ReferenceError: require is not defined 

Dans la ligne suivante. Il en va de même pour le fichier notification.js. Lorsque je presse continuer dans le débogueur, tout fonctionne à nouveau comme prévu en dehors de cette erreur.

 var cordova_events = require('./src/events'), 

L'ordre des fichiers de script java est donné ci-dessous.

 <script src="js/cordova.js"></script> <script src="js/notification.js"></script> <script src="js/vibration.js"></script> 

Je crois que je ne fais pas référence au bon fichier cordova.js et à toutes les autres dépendances. Mais je me demande aussi comment est-ce que l'application fonctionne bien dans Ripple lorsque la console du développeur n'est pas active.

J'ai même essayé d'enlever le fichier cordova.js alors que Ripple l'inclut automatiquement en fonction de l'événement dédié à la fonction phonegap – émulateur ondulé

J'ai les copies de téléchargement de phonegap et cordova à partir de leurs sites respectifs. J'ai installé Node.js et j'ai installé les packages aussi.

Mes questions sont les suivantes:

  • Où trouver le fichier correct cordova.js? Quelle est la version correcte à inclure dans mon projet de fichiers html?
  • Quel est l'utilisateur de Node.js ici?
  • Est-ce conçu pour inclure automatiquement les scripts basés sur Node.js? Si oui, ce qui me manque?

J'avoue que le concept et l'utilisation de node.js ressemble à une science de fusée pour moi.

Cordova et Phonegap sont à peu près la même chose, vous ne devriez pas avoir besoin de télécharger les deux. Cordova est le projet open source qui vous aide à publier votre application HTML5 sur plusieurs systèmes d'exploitation mobiles différents. Phonegap utilise Cordova pour le faire, mais ajoute également des fonctionnalités supplémentaires, en grande partie simplement en mesure de construire sur le nuage plutôt que sur votre poste de travail.

Node.js est utilisé par Cordova pour beaucoup d'étapes du bâtiment. Depuis que Cordova travaille sur les machines OSX et Windows, nous avons besoin d'un moyen d'écrire des scripts de compilation et de package qui fonctionneraient sur les deux systèmes d'exploitation – node.js fournit ceci. Lorsque vous créez une application avec Cordova, vous ne devez pas vraiment utiliser node.js, sauf si vous créez également un système de backend complémentaire.

À partir de Cordova 3.x, il existe un outil de ligne de commande cordova qui peut grandement vous aider à créer l'application. Il prend soin de copier les bons fichiers cordova.js et cordova-android.jar. Vous pouvez le lire ici http://cordova.apache.org/docs/en/edge/guide_cli_index.md.html#The%20Command-line%20Interface

Une fois que vous avez configuré, vous voudrez peut-être lire ma autre réponse qui clarifie certains cas d'utilisation de l'outil cordova : un plug-in phonegap doit-il être déclaré dans le fichier config.xml?

N'utilisez pas les fichiers * .js de plugins hors de la source du plugin.

N'ajoutez pas de plugins * .js fichiers comme tags dans votre html
(Cordova les charge seul en se basant sur cordova_plugins.js)

L'erreur spécifique 'require is not defined' provient de cordova manquant définie dans les plugins.js

 cordova.define("org.apache.cordova.file.DirectoryEntry", function(require, exports, module) { } 

Pour éviter tout ce problème:

Utilisez l' interface de ligne de commande cordova pour configurer des plates-formes et des plugins. Il gère tous les fichiers sources natifs et javascript et les regroupe de manière appropriée.