私はElectronアプリを構築しようとしていて、window.requireを使用したいと考えています。残念ながら、コンパイラは「TypeError:window.requireは関数ではありません」と言っています。皮肉なことにrequireはonlyで動作し、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=をアクティブにする方法がわかりません。
使用しているElectron
のバージョンは不明です。使用している構文は非標準です。
まず、Electron
5.0を使用している場合、BrowserWindows
で nodeIntegrationはデフォルトではfalse なので、ウィンドウを作成するときに明示的に指定する必要があります。
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
上記を前提として、以下の構文は正常に機能します(つまり、「ウィンドウ」参照は必要ありません)。
const { ipcRenderer, remote } = require('electron');