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.
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
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 .
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>
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>
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
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});
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
- Zainstaluj jQuery używając npm. (
npm install jquery --save
) - Użyj go:
<script> let $ = require("jquery") </script>
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";
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>
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 .
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')
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",
...
...
]
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>
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')
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