JQuery nie jest zdefiniowane

Problem: podczas tworzenia przy użyciu Electron, gdy próbujesz użyć dowolnej wtyczki JS, która wymaga jQuery, wtyczka nie znajduje jQuery, nawet jeśli załadujesz poprawną ścieżkę za pomocą znaczników skryptu.

Na przykład,

<body>
<p id="click-me">Click me!</p>
...
<script src="node_modules/jquery/dist/jquery.min.js"></script> //jQuery should be loaded now
<script>$("#click-me").click(() => {alert("Clicked")});</script>
</body>

Uruchomienie powyższego kodu nie zadziała. W rzeczywistości otwórz DevTools, przejdź do widoku konsoli i kliknij element <p>. Powinieneś to zobaczyć function $ is not defined lub coś w tym stylu.

Author: Pranav A., 2015-09-17

14 answers

A better an more generic solution IMO:

<!-- Insert this line above script imports  -->
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>

<!-- normal script imports etc  -->
<script src="scripts/jquery.min.js"></script>    
<script src="scripts/vendor.js"></script>    

<!-- Insert this line after script imports -->
<script>if (window.module) module = window.module;</script>

Korzyści

  • Działa zarówno dla przeglądarki jak i elektronu z tym samym kodem
  • rozwiązuje problemy ze wszystkimi bibliotekami innych firm (nie tylko jQuery) bez konieczności określania każdej z nich
  • script Build / Pack Friendly (tj. Grunt / Gulp wszystkie skrypty do dostawcy.js)
  • nie wymaga node-integration aby było fałszywe

Źródło tutaj

 599
Author: Dale Harders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-29 09:50:27

Jak widać w https://github.com/atom/electron/issues/254 problem jest spowodowany tym kodem:

if ( typeof module === "object" && typeof module.exports === "object" ) {
  // set jQuery in `module`
} else {
  // set jQuery in `window`
}

Kod jQuery "widzi", że działa w środowisku CommonJS i ignoruje window.

Rozwiązanie jest naprawdę proste , zamiast ładować jQuery przez <script src="...">, powinieneś załadować Tak:

<script>window.$ = window.jQuery = require('./path/to/jquery');</script>

Uwaga: kropka przed ścieżką jest wymagana , ponieważ wskazuje, że jest to bieżący katalog. pamiętaj aby załadować jQuery przed załadowaniem innej wtyczki, która od niej zależy .

 102
Author: Bruno Vaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 22:18:18

Inny sposób zapisu <script>window.$ = window.jQuery = require('./path/to/jquery');</script> to:

<script src="./path/to/jquery" onload="window.$ = window.jQuery = module.exports;"></script>
 45
Author: Aaleks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-19 18:34:56

Elektron FAQ odpowiedź:

Http://electron.atom.io/docs/faq/

Nie mogę używać jQuery / RequireJS / Meteor / AngularJS w Electron.

Ze względu na węzeł.js integracji elektronów, istnieje kilka dodatkowych symbole wstawione do modułu DOM like, exports, require. To powoduje problemy dla niektórych bibliotek, ponieważ chcą wstawić symbole o tych samych nazwach.

Aby to rozwiązać, możesz wyłączyć integrację węzłów w elektronach:

/ / w procesie głównym.

let win = new BrowserWindow({  
 webPreferences: {
 nodeIntegration: false   } });

Ale jeśli chcesz zachować możliwości korzystania z Node.js i elektron API, musisz zmienić nazwy symboli na stronie przed włączeniem inne biblioteki:

<head> 
<script> 
window.nodeRequire = require; 
delete window.require;
delete window.exports; delete window.module; 
</script> 
<script type="text/javascript" src="jquery.js"></script> 
</head>
 44
Author: Fran6,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-11 16:01:20

Właśnie natknąłem się na ten sam problem

npm install jquery --save

<script>window.$ = window.jQuery = require('jquery');</script>

Pracował dla mnie

 23
Author: Dhaval Chauhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-08 16:21:02

Możesz umieścić node-integration: false wewnątrz opcji w oknie przeglądarki.

Eg: window = new BrowserWindow({'node-integration': false});

 15
Author: Murilo Feres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-22 16:35:36

Ładne i czyste rozwiązanie

  1. Zainstaluj jQuery używając npm. (npm install jquery --save)
  2. Użyj go: <script> let $ = require("jquery") </script>
 10
Author: adgelbfish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-11 13:46:37

Myślę, że rozumiem twoją walkę, rozwiązałem ją trochę inaczej.Użyłem script loader dla mojego pliku js, który jest w tym jquery.Script loader pobiera plik js i dołącza go do dostawcy.plik js zrobił dla mnie magię.

Https://www.npmjs.com/package/script-loader

Po zainstalowaniu script loader dodaj to do pliku startowego lub aplikacji.

Import ' script!ścieżka / Twój-plik.js";

 4
Author: Mertcan Diken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 08:34:19

Ok, oto inna opcja, jeśli chcesz względnego include...

<script> window.$ = window.jQuery = require('./assets/scripts/jquery-3.2.1.min.js') </script>
 3
Author: aestrro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-02 20:33:16
<script>
  delete window.module;
</script>

Przed importem jquery i jesteś gotowy. Więcej informacji tutaj .

 3
Author: Sagiv Ofek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-29 01:21:51

Pracował dla mnie używając poniższego kodu

var $ = require('jquery')
 2
Author: Adeojo Emmanuel IMM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 06:46:29

Jeśli używasz Angular2, możesz utworzyć nowy plik js o tym kodzie:

// jquery-electron.js

if ((!window.jQuery || !window.$) && (!!module && !!module.exports)) {
      window.jQuery = window.$ = module.exports;
}

I umieścić go zaraz po ścieżce jquery, wangular-cli.json:

"scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "assets/js/jquery-electron.js",
    ...
    ...
]
 1
Author: Max,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 10:19:30

1.Zainstaluj jQuery używając npm.

npm install jquery --save

2.

<!--firstly try to load jquery as browser-->
<script src="./jquery-3.3.1.min.js"></script>
<!--if first not work. load using require()-->
<script>
  if (typeof jQuery == "undefined"){window.$ = window.jQuery = require('jquery');}
</script>
 1
Author: Alexey Kolotsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-31 05:51:34

Stoję w obliczu tego samego problemu i to zadziałało na mnie!

Install jQuery using npm

npm i jquery

Następnie dołącz jQuery w jeden z następujących sposobów.

Używanie znacznika Script

<script>window.$ = window.jQuery = require('jquery');</script>

Korzystanie Z Babel

import $ from "jquery";

Using Webpack

var $ = require('jquery')
 0
Author: Carlos Abraham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 04:15:41