Man*_*ds3 7 javascript node.js electron
我试图建立一个电子应用程序,并想使用window.require。不幸的是,编译器说“ TypeError:window.require不是函数”。具有讽刺意味的是,仅在main.js中需要工作。
这是我试图运行的代码:
const electron = window.require('electron')
const low = window.require('lowdb')
const FileSync = window.require('lowdb/adapters/FileSync')
Run Code Online (Sandbox Code Playgroud)
我在另一篇文章中读到有人遇到了同样的问题,并且通过将以下代码添加到.html文件中来解决了该问题:
<script type="text/javascript" src="../../../Gehaltseinstellungen_Hinzufügen.js">
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
Run Code Online (Sandbox Code Playgroud)
作者还说,使用“ nodeRequire”而不是require可以解决问题,但是并不能...
我读到的另一个选项是,在激活渲染过程时,NodeIntegration设置为false,但是我不知道如何在渲染时激活Node。
小智 26
您可以像这样将webPreferences.contextIsolation设置为false
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
Run Code Online (Sandbox Code Playgroud)
它可能有效
No *_*ing 23
目前尚不清楚Electron您使用的是哪个版本。您使用的语法是非标准的。
首先-如果您使用的是Electron5.0,则默认情况下,nodeIntegration为false,BrowserWindows因此在创建窗口时需要显式指定它:
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
Run Code Online (Sandbox Code Playgroud)
鉴于以上所述,以下语法可以正常工作(即,无需“窗口”引用):
const { ipcRenderer, remote } = require('electron');
Run Code Online (Sandbox Code Playgroud)
小智 7
我在 Electron + Angular 中也遇到了这个问题。
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
Run Code Online (Sandbox Code Playgroud)
上面的配置对我有用。
需要像这样的所有 3 个设置才能完成这项工作:
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
contextIsolation: false,
},
Run Code Online (Sandbox Code Playgroud)
注意:macbook m1,big sur 11.4,也许它必须对操作系统,idk 做些什么。
小智 5
Electron + React + Typescript 中存在同样的问题。这为我解决了这个问题
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
contextIsolation: false
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5124 次 |
| 最近记录: |