即使 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