Uncaught Error: Impossible de trouver le module 'jquery'
Je suis en utilisant Electron de faire une application de bureau. Dans mon application je suis de chargement d'un site externe (à l'extérieur de l'Atome app) permet de dire http://mydummysite/index.html page.
Voici la structure de mon application dans L'Atome De L'Éditeur:
je.e c'est d'avoir des pièces suivantes:
main.js
package.json
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();
});
paquet.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>
Quand je lance l'application ci-dessus (en faisant glisser le dossier de l'application de l'Électron) la page externe (http://mydummysite/index.html) charges dans la couche électronique
mais avec l'erreur
Uncaught Error: Impossible de trouver le module 'jquery'
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 alread installé jquery module de mon dossier et je l'ai fait via npm install jquery
de commande.
Remarque: Pour jouer avec require
commande en JS j'ai essayé d'ajouter require("ipc")
dans ma page externe http://mydummysite/index.html page et il travaillait alors, quelle pourrait être la raison avec require("jquery")
.
Ai-je ajouter un module externe (jquery) à la bonne façon d'Électrons?
Je suis pas certains de la dépendance dans package.json
?
Ce que j'ai déjà essayé:
npm cache clean
,npm install jquery
(à mon dossier app)npm install --save jquery
npm install jquery -g
npm rebuild
sudo npm install jquery -g
sudo npm install jquery
export NODE_PATH=/usr/local/lib/node_modules
Voici la capture d'écran de l'endroit où l'erreur est levée dans module.js
Quelqu'un peut-il suggérer pourquoi require("ipc")
est travail et require("jquery")
pas?
Mon but est d'utiliser jQuery avec d'électrons app avec nœud-intégration vrai.
- github.com/UncoolAJ86/node-jquery/issues/35 pas sûr que ce soit ce lien à résoudre, mais il vous permettra de commencer.
- double possible de Comment utiliser node_modules au sein de l'électron (anciennement atome-shell)
- Yan, celui dont vous parlez est le cas lorsque nous faisons l'aide d'une page à l'intérieur de l'atome application shell. Je suis le chargement d'une page à partir d'une url externe.
- pouvez-vous montrer paquet.json pour jquery paquet ??
Vous devez vous connecter pour publier un commentaire.
tl;dr
Contrairement à une normale de nodejs app, où vous avez accès à des modules globaux (par exemple, situé dans
/usr/bin/node
), l'électron n'est pas automatiquement leNODE_PATH
variables d'environnement. Vous devez régler manuellement tous les chemins contenant vos modules souhaités.Mise à jour:
La réponse à la question
est trouvé dans ce question, indiquant que le système/utilisateur, les modules ne doivent pas être inclus dans le chemin d'accès global du module
Et si vous jetez un oeil à d'électrons de la source vous pouvez voir que les modules internes sont ajoutés à la
module.globalPaths
:c'est pourquoi vous avez accès à
ipc
,app
, etc. mais pas les modules que vous avez installés au niveau mondial en utilisantnpm install -g
.J'ai juste essayé avec la dernière
électron-prêts à l'emploi
version avec un serveur local desservant exactement le même fichier HTML que vous avez fournies et je pense que je sais ce qu'est le problème: Si vous n'avez pas à ajouter le chemin d'accès à votre applicationnode_modules
sous-répertoire de votre application de la racine à laNODE_PATH
variable, il n'est pas d'aller travailler. Si vous avez besoin de faire quelque chose comme ceci:Lors de l'exportation
NODE_PATH
assurez-vous de fournir un chemin d'accès absolu.Mise à jour 2:
La réponse à l'observation:
Se trouve dans ce billet. Fondamentalement, si vous utilisez le jQuery du package npm ou de faire quelque chose comme ce qui suit dans vos fichiers HTML à l'intérieur de l'électron:
Ce que vous obtenez est un usine pas l'objet jQuery attaché au contexte global (e.g
window
). Comme je l'ai mentionné dans un réponse précédente (contenant également de jQuery code source)Maintenant pour une utilisation en usine (par importation du code de la CAN ou si vous avez le mécanisme national de prévention module disponible localement), vous auriez besoin de quelque chose comme la suivante:
J'ai écrit une l'article qui explique la combinaison de Nœud + jQuery.
app
), fonctionnent sans problème.ipc
est disponible et pourquoi globale des nodules pas!export NODE_PATH=/PATH/TO/APP/node_modules electron /PATH/TO/APP
Installer jquery avec la ngp n'est pas assez :
Il récupère les fichiers source de jQuery dans votre projet. Mais vous devez inclure le script dans votre fichier html :
Essayez ce qui suit:
OU
J'ai le même problème lors de l'utilisation de jQuery avec des électrons, et de trouver une solution pour ces cas:
Source: https://discuss.atom.io/t/electron-app-to-host-external-site/16390/9
J'espère lien ci-dessous permettra de mettre la lumière sur votre doute pour
https://github.com/atom/electron/issues/254
https://discuss.atom.io/t/electron-app-to-host-external-site/16390/7
Le même problème m'est arrivé , une solution simple est d'ajouter à votre index.js fichier :
le problème est causé par nœud pour plus d'informations , veuillez vous référer à cette post