开发者问题收集

即使 enableRemoteModule 为 true,Electron.remote 也未定义

2021-07-03
4053

我是新手。我遇到了一些问题!

作为标题,请帮帮我。 即使我设置了 enableremotemodule = true,我也遇到了这个错误。 这是我的代码

javascript:

const $ = require('jquery');
const remote_v = require("electron").remote;
var win = remote.getCurrentWindow();

$('#minimize').click(function(){
  remote_v.BrowserWindow.getFocusedWindow().minimize();
});

$('#close').click(function(){
  remote_v.getCurrentWindow().close();
});

main.js


const {app, BrowserWindow} = require('electron')
const path = require('path')
function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 530,
    height: 330,
    resizable: false,
    frame : false,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true,
      preload: path.join(__dirname, 'preload.js')
    }
  })
  mainWindow.loadFile('index.html')
  mainWindow.webContents.openDevTools();
}

app.whenReady().then(() => {
  createWindow()
  app.on('activate', function () {

    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

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

非常感谢,祝你有美好的一天!。

3个回答
// Deprecated in Electron 12:
const { BrowserWindow } = require('electron').remote

安装 @electron/remote 模块

// Replace with:
const { BrowserWindow } = require('@electron/remote')

// In the main process:
require('@electron/remote/main').initialize()

注意:在 electron >= 14.0.0 中,您必须使用新的启用 API 为每个所需的 WebContents 分别启用远程模块:

require("@electron/remote/main").enable(win.webContents);

这里 是 API 中的更改。 我相信这可以帮助您弄清楚自从最新的 electron 中删除远程模块以来的新变化。

Sumanth Perambuduri
2021-10-05

根据 文档 ,这只是一个语法问题。

const $ = require('jquery');
const {BrowserWindow} = require("electron").remote;

$('#minimize').click(function(){
  BrowserWindow.getFocusedWindow().minimize();
});

$('#close').click(function(){
  BrowserWindow.getFocusedWindow().close();
});
cachique
2021-07-03

新版本的 electron(我使用的是 15.0.0)不再有远程模块。如果你查看 文档 ,你会发现它没有 enableRemoteModule 选项。也许 这个 可以帮助你。

 // In main process.
const { ipcMain } = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.reply('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.returnValue = 'pong'
})

// In renderer process (web page).
// NB. Electron APIs are only accessible from preload, unless contextIsolation is disabled.
// See https://www.electronjs.org/docs/tutorial/process-model#preload-scripts for more details.
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg) // prints "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')
Valerie
2021-09-28