问题

渲染进程里无法使用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
}

这样就可以了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐