📜  错误:contextbridge api 只能在启用 contextisolation 时使用 (1)

📅  最后修改于: 2023-12-03 15:28:34.852000             🧑  作者: Mango

错误:contextBridge API 只能在启用 contextIsolation 时使用

介绍

当您尝试在未启用 contextIsolation 的情况下使用 contextBridge API 时,您将会遇到上述错误。

contextBridge API 用于在 Electron 主进程和渲染进程之间安全地传递信息。它提供了一种安全的机制来暴露指定的 Electron API 给渲染进程使用。

导致错误的原因

当您的应用程序在 main.js 中未启用 contextIsolation 时,您将无法使用 contextBridge API。

contextIsolation 启用后,Electron 将在渲染进程和主进程之间创建沙盒。这个沙盒会禁止渲染进程直接访问主进程的 API,并提供一种安全的方式来暴露指定的 API 给渲染进程。

如何解决这个错误

要解决此错误,请在您的应用程序的 main.js 中启用 contextIsolation。 您可以使用以下代码:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      contextIsolation: true, // 启用 contextIsolation
      preload: path.join(app.getAppPath(), 'preload.js')
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

确保将 webPreferences 中的 contextIsolation 设置为 true。这将启用 contextIsolation,您就可以使用 contextBridge API 了。

结论

如您所见,启用 contextIsolation 是使用 contextBridge API 的关键。只要您在应用程序的 main.js 中启用了 contextIsolation,您就可以使用 contextBridge API 在渲染进程和主进程之间安全地传递信息了。