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 :
c'est-à-dire qu'il comporte les parties suivantes:
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'"
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é:
Voici la capture d'écran de l'emplacement d'où l'erreur est renvoyée dans module.js
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.
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>
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
# 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>
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
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.