问题
渲染进程里无法使用node模块
Uncaught ReferenceError: require is not defined
渲染进程的代码
let electron = require('electron'); // 引入electron模块
let app = electron.app; // 创建electron引用
let BrowserWindow = electron.BrowserWindow; // 创建窗口引用
let mainWindow = null; // 声明要打开的主窗口
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 300, // 设置打开的窗口大小
height: 300 ,
// 增加全量使用node.js,因为我们要使用node里的fs模块
// enableRemoteModule 设置为true,否则不允许在渲染器上使用 remote
webPreferences:{
nodeIntegration:true,
enableRemoteModule: true,
}
});
mainWindow.loadFile('demo2.html'); // 加载哪个页面
mainWindow.on('closed', () => { // 监听关闭事件,把主窗口设置为null,否则内存会占用越来越多
mainWindow = null;
})
})
尝试
我在上面的代码里面已经增加下面的内容,但是还是报错。
webPreferences:{
nodeIntegration:true,
enableRemoteModule: true,
}
出现这个问题是因为官方为了安全性,将 electron v12.0.0 的 contextIsolation 的默认值改了。所以今后要在渲染进程里调用 require 的话,还需要加上 contextIsolation: false 。
创建窗口的代码改为:
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true
}
这样就可以了。