web-dev-qa-db-fra.com

TypeError: window.require n'est pas une fonction

Im essayant de construire une application électronique et je veux utiliser window.require. Malheureusement, le compilateur dit "TypeError: window.require n'est pas une fonction". Ironiquement nécessite fonctionne niquement dans main.js.

Voici le code que j'essaie d'exécuter:

const electron = window.require('electron')
const low =  window.require('lowdb')
const FileSync = window.require('lowdb/adapters/FileSync')

J'ai lu dans un autre post que quelqu'un a eu le même problème et il a été corrigé en ajoutant ce code dans le fichier .html:

    <script type="text/javascript" src="../../../Gehaltseinstellungen_Hinzufügen.js">
        window.nodeRequire = require;
        delete window.require;
        delete window.exports;
        delete window.module;
    </script>

L'auteur a également déclaré que l'utilisation de "nodeRequire" au lieu de require résoudrait le problème, mais ce n'est pas le cas ...

Une autre option que j'ai lue est que NodeIntegration est définie sur false pendant que le processus de rendu est activé, mais je ne sais pas comment activer Node pendant le rendu.

9
Manfreds3

La version de Electron que vous utilisez n'est pas claire. La syntaxe que vous utilisez n'est pas standard.

Premièrement - si vous utilisez Electron 5.0, nodeIntegration est false par défaut dans BrowserWindows, vous devez donc le spécifier explicitement lorsque vous créez votre fenêtre:

mainWindow = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    nodeIntegration: true
  }
})

Compte tenu de ce qui précède, la syntaxe ci-dessous fonctionne correctement (c'est-à-dire qu'aucune référence de `` fenêtre '' n'est nécessaire):

const { ipcRenderer, remote } = require('electron');
30
No Grabbing