Ошибка пакета с помощью webpack для приложения Electron `Невозможно разрешить модуль 'электрон``

Я пытаюсь создать приложение Electron с React. Я использую Webpack для компиляции синтаксиса React JSX, но когда я пытаюсь скомпилировать команду webpack, я получил эту ошибку:

ОШИБКА в. /app.jsx Модуль не найден: Ошибка: невозможно разрешить модуль "электрон" в /Users/masterT/Downloads/gist

@./app.jsx 6: 18-37

Вот код приложения .

Я делаю что-то неправильно?

Спасибо!

Ответы

Ответ 1

Webpack пытается разрешить модуль electron с установленным node_modules. Но модуль electron разрешен в самом электоре во время выполнения. Таким образом, вы должны исключить определенный модуль из пакета webpack следующим образом:

webpack.config.js:

module.exports = {
  entry: './app.jsx',
  output: {
    path: './built',
    filename: 'app.js'
  },
  target: 'atom',
  module: {
    loaders: [
      {
        loader: 'babel',
        test: /\.jsx$/,
        query: {
          presets: ['es2015', 'react']
        }
      }
    ]
  },
  externals: [
    (function () {
      var IGNORES = [
        'electron'
      ];
      return function (context, request, callback) {
        if (IGNORES.indexOf(request) >= 0) {
          return callback(null, "require('" + request + "')");
        }
        return callback();
      };
    })()
  ]
};

Ответ 2

Очень простое решение:

const remote = window.require('electron').remote;

webpack будет игнорировать это требует

Ответ 3

Вы можете установить target: 'electron' в свою конфигурацию webpack, а затем вам не нужно исключать электрон извне.

Из документация по webpack:

"electron" Скомпилировать для использования в Electron - поддерживает require -ing Электронные модули.

Ответ 4

В вашем пакете .json есть "электронно-предварительно построенный", но вам нужен "электрон" в вашем коде. Вы пробовали требовать "предварительную сборку электронов"?