Электронный JQuery модуль не загружается

У меня проблема при загрузке jquery на электрон.

Проблема существует только когда на main.js я ставлю

mainWindow.loadURL('http://localhost:3000/menu');

и я отправляю обратно menu.html

однако, когда я использую этот метод, Jquery работает нормально

 mainWindow.loadURL('ile://' + __dirname + '/menu.html');

Мне нужно, чтобы он работал с использованием localhost.

1 ответ

Решение

Это известная проблема. Это потому, что JQuery автоматически определяет наличие node.js - Electron добавляет в браузер контекст node.js, поэтому JQuery запутывается.

Лучший подход - установить JQuery через npm, используйте electron-rebuild затем измените свой HTML-файл, чтобы он выглядел следующим образом:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>My Electron App</title>

  <link href="stylesheets/main.css" rel="stylesheet" type="text/css">
    <link href="./node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet" type="text/css">

  <script src="helpers/context_menu.js"></script>
  <script src="helpers/external_links.js"></script>

</head>
<body>

  <div class="container">
    <h1 id="greet"></h1>
    <p class="subtitle">
      Welcome to <a href="http://electron.atom.io" class="js-external-link">Electron</a> app running on this magnificent <strong id="platform-info"></strong> machine.
    </p>
    <p class="subtitle">
      You are in <strong id="env-name"></strong> environment.
    </p>
        <div class="jumbotron">
            <h1>Bootstrap Test</h1>
            <p>
                Some content that should be in a Bootstrap "jumotron" box.
                If it isn't, check your html code to make sure that the Bootstrap css is loaded.
                Also check the dev console in the app to look for errors.
            </p>
        </div>
    </div>

    <script>window.$ = window.jQuery = require('jquery');</script>
    <script src="app.js"></script>

</body>
</html>

Это стандартный шаблон, но со специальным сценарием загрузчика JQuery и загрузчиком app.js, перенесенным после этого, на тот случай, если вы делаете в обычном сценарии приложения что-либо, требующее jquery - например, загрузку Twitter Bootstrap теперь можно выполнить с помощью npm для установить загрузчик, делая electron-rebuild затем, используя это в вашем app.js:

import bootstrap from 'bootstrap';

Другие вопросы по тегам