web-dev-qa-db-fra.com

Erreur de bundle lors de l'utilisation du webpack pour l'application Electron `` Impossible de résoudre le module 'électron' ''

J'essaie de créer une application Electron avec React . J'utilise Webpack pour compiler la syntaxe React JSX , mais quand j'essaie pour compiler avec la commande webpack, j'ai eu cette erreur:

ERREUR dans le module ./app.jsx introuvable: Erreur: impossible de résoudre le module 'électron' dans/Users/masterT/Downloads/Gist

@ ./app.jsx 6: 18-37

Voici le code d'application .

Je fais quelque chose de mal?

Merci!

22
MasterT

Webpack essaie de résoudre le module electron avec les modules node_modules installés. Mais le module electron est résolu dans Electron lui-même au moment de l'exécution. Donc, vous devez exclure un module particulier du regroupement de webpack comme ceci:

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();
      };
    })()
  ]
};
26
minodisk

Une solution très simple:

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

le webpack ignorera cette exigence

33
jnoleau

Vous pouvez définir target: 'electron' dans votre configuration webpack et vous n'avez pas besoin d'exclure électron dans les externes.

De documentation du webpack :

"electron" Compiler pour une utilisation dans Electron - prend en charge require- des modules spécifiques à Electron.

21
Konrad Lalik