web-dev-qa-db-fra.com

Erreur non capturée: impossible de trouver le module 'jquery'

J'utilise Electron pour créer une application de bureau. Dans mon application, je charge un site externe (en dehors de Atom)), disons http: //mydummysite/index.html .

Voici la structure de mon application en Éditeur Atom :

enter image description here

c'est-à-dire qu'il comporte les parties suivantes:

  1. main.js
  2. package.json
  3. nodemodules> jquery (pour charger jquery)

Code source:

main.js:

   'use strict';

    var app = require('app');

    app.on('ready', function() {
      var BrowserWindow = require('browser-window');

      var win = 
      new BrowserWindow({ width: 800, height: 600, show: false, 
               'node-integration':true });
      win.on('closed', function() {
        win = null;
      });

      win.loadUrl('http://mydummysite/index.html ');
      win.show();
    });

package.json:

{
  "name": "my-mac-app",
  "version": "5.2.0",
  "description": "My Mac Desktop App",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Me",
  "license": "ISC",
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

Page externe - http: //mydummysite/index.html code de la page:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <h1>Hello World!</h1>

  </body>
<script>

   var jqr=require('jquery');

</script>
</html>

Lorsque je lance l'application ci-dessus (en faisant glisser le dossier de l'application sur Electron), la page externe ( http: //mydummysite/index.html ) est chargée dans Electron Shell mais avec l'erreur "Erreur non capturée: impossible de trouver le module 'jquery'"

enter image description here

Pouvez-vous m'aider à trouver la cause de ce problème?

Comme vous pouvez le voir dans ma capture d'écran de la structure de répertoire, j'ai déjà installé le module jquery dans mon dossier et je l'ai fait via la commande "npm install jquery".

Remarque: pour jouer avec la commande "require" dans JS, j’ai essayé d’ajouter "require (" ipc ")" à ma page externe http: //mydummysite/index.html page et elle fonctionnait être la raison avec require ("jquery").

Ai-je ajouté le module externe (jQuery) de manière correcte dans Electron?

Est-ce que je manque une dépendance dans package.json?

Ce que j'ai déjà essayé:

  • npm cache clean, npm install jquery (dans mon dossier d'application)
  • npm install --save jquery
  • npm installer jquery -g
  • npm reconstruire
  • Sudo npm installer jquery -g
  • Sudo npm install jquery
  • export NODE_PATH =/usr/local/lib/node_modules

Voici la capture d'écran de l'emplacement d'où l'erreur est renvoyée dans module.js

enter image description here

Quelqu'un peut-il suggérer pourquoi require ("ipc") fonctionne et nécessite ("jquery") pas?

Mon objectif est d'utiliser jQuery avec electron app avec une intégration de nœud vraie.

53
Raghav

Installer jquery avec npm ne suffit pas:

npm install --save jquery

Il récupère les fichiers source de jQuery dans votre projet. Mais vous devez inclure le script dans votre fichier HTML:

<!DOCTYPE html>
<html>
  <head></head>

  <body>
      <h1>Hello World!</h1>
  </body>

  <!-- Try to load from cdn to exclude path issues. -->
  <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

  <script>
     window.jQuery = window.$ = jQuery;

     $(document).ready(function() {
         console.log( "jQuery is loaded" );
     });
  </script>

</html>
7
Damien

J'ai le même problème lorsque jQuery est utilisé avec electron et je trouve une solution à ce problème:

<script type="text/javascript" src="js/jquery.min.js"
 onload="window.$ = window.jQuery = module.exports;" ></script>

Source: https://discuss.atom.io/t/electron-app-to-Host-external-site/16390/9

3
gunivan
# assuming you have installed jquery locally instead of globally like in as
npm install jquery -s         # without -g flag

au lieu de Requiert ( "jquery" ), donne le chemin relatif depuis le répertoire source
require ( "./ node_modules/jquery/dist/jquery.min.js ");

Essayez ce qui suit:

<script>window.$ = window.jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>

OR

<script>var $ = jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>
3
VanagaS

J'espère que le lien ci-dessous mettra un peu de lumière sur votre doute

pourquoi require ("ipc") fonctionne et require ("jquery") pas?

https://github.com/atom/electron/issues/254

https://discuss.atom.io/t/electron-app-to-Host-external-site/16390/7

2
Akki619

Le même problème m’est arrivé, une solution simple consiste à ajouter ceci à votre fichier index.js:

app.on('ready', function() {
      var mainWindow = new BrowserWindow({
        "node-integration": false
      })
//rest of your initialization code here.
})

le problème est causé par noeud, pour plus d'informations s'il vous plaît se référer à ceci post

Définir la valeur false pour node-integration désactive node.js dans le processus de rendu - c’est-à-dire que votre application ne peut faire que ce que fera un navigateur Web.

0
ProllyGeek