我正在尝试构建一个电子应用程序,并希望使用window.require。不幸的是,编译器说“ TypeError:window.require不是函数”。具有讽刺意味的是, require 仅在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>
作者还说,使用“ nodeRequire”而不是require可以解决问题,但不能...
我了解到的另一个选项是,在激活渲染过程时,NodeIntegration设置为false,但是我不知道如何在渲染时激活Node。
感谢阅读,祝您有美好的一天;)
答案 0 :(得分:20)
您可以像这样将 webPreferences.contextIsolation 设置为 false
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
也许有用
答案 1 :(得分:5)
需要像这样的所有 3 个设置才能完成这项工作:
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
contextIsolation: false,
},
<块引用>
注意:macbook m1,big sur 11.4,可能跟OS,idk有关系。
答案 2 :(得分:1)
不清楚您使用的是Electron
的哪个版本。您使用的语法是非标准的。
首先-如果您使用Electron
中的BrowserWindows
5.0,nodeIntegration is false by default,那么在创建窗口时需要明确指定它:
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
鉴于上述情况,以下语法可以正常工作(即无需“窗口”引用):
const { ipcRenderer, remote } = require('electron');
答案 3 :(得分:0)
我在 Electron + Angular 中也遇到过这个问题。
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
上面的配置对我有用。