最近使用Electron 调用系统API时 居然提示模块为找到异常, 原因是 在Electron大于20版本时渲染进程系统默认启用了沙盒 sandbox.
当 Electron 中的渲染进程被沙盒化时,它们的行为与常规 Chrome 渲染器一样。 一个沙盒化的渲染器不会有一个 Node.js 环境。
所以, 沙盒开启时所有的Node.JS的系统API都不可用.
可通过在 BrowserWindow 构造函数中使用 sandbox: false
选项 或者 nodeIntegration: true 来针对每个进程禁用渲染器沙盒。
app.whenReady().then(() => {
const win = new BrowserWindow({
webPreferences: {
sandbox: false,
//nodeIntegration: true
}
})
win.loadURL('https://github.com/tekintian')
})
禁用沙盒后就可以调用nodejs的API了.
官方文档 Process Sandboxing | Electron