web-dev-qa-db-ja.com

TypeError:window.requireは関数ではありません

私はElectronアプリを構築しようとしていて、window.requireを使用したいと考えています。残念ながら、コンパイラは「TypeError:window.requireは関数ではありません」と言っています。皮肉なことにrequireonlyで動作し、main.jsで動作します。

ここで私が実行しようとしているコード:

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

誰かが同じ問題を抱えていることを別の投稿で読んだところ、次のコードを.htmlファイルに追加することで修正されました。

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

また、作成者はrequireの代わりに "nodeRequire"を使用すると問題が解決するだろうと述べましたが、それは...

私が読んだ別のオプションは、レンダリングプロセスがアクティブになっている間、NodeIntegrationがfalseに設定されていることですが、レンダリング中にNode=をアクティブにする方法がわかりません。

9
Manfreds3

使用しているElectronのバージョンは不明です。使用している構文は非標準です。

まず、Electron 5.0を使用している場合、BrowserWindowsnodeIntegrationはデフォルトではfalse なので、ウィンドウを作成するときに明示的に指定する必要があります。

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

上記を前提として、以下の構文は正常に機能します(つまり、「ウィンドウ」参照は必要ありません)。

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