电子遥控器未定义,且 enableremotemodule = true
2021-06-26
2880
我尝试使用对话框与
"electron": "^13.1.4"
,但出现错误
Uncaught TypeError: Cannot read property 'dialog' of undefined.
,即使我设置了
enableremotemodule = true
。
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
......
......
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
contextIsolation: false,
enableremotemodule: true,
nodeIntegration: true,
}
});
这是调用电子遥控器并得到未定义的代码
import { OpenDialogOptions, remote } from 'electron';
.......
.......
openFile() {
let options: OpenDialogOptions = {};
console.log(remote); // log undefined
remote.dialog.showOpenDialog(options).then((filePath) => {
console.log(filePath);
});
}
2个回答
什么是
OpenDialogOptions
,electron 文档中没有此项目
尝试使用
const { dialog } = require('electron').remote
并将 main.js 中的大小写更改为
enableRemoteModule: true
请参阅此 electron 的对话框文档
Dinesh s
2021-06-26
如果您使用的是 elect 14.0 或更高版本,则
remote
不再是核心 electron 的一部分,但您可以包含
const {dialog} = require('@electron/remote');
您还应该在主进程中初始化 remote,并允许您的窗口执行 remote
在您的主进程中执行此操作
require("@electron/remote/main").initialize();
const mainRemote = require("@electron/remote/main");
mainRemote.enable(win.webContents);
在您的渲染器进程中
const remote = window.require("@electron/remote");
const { getCurrentWebContents, getCurrentWindow, dialog } = remote;
const webContents = getCurrentWebContents();
const currentWindow = getCurrentWindow();
//now show your dialog
const response = dialog.showMessageBoxSync(currentWindow, {
buttons: ["Yes", "No"],
message: "Do you really want to save?",
title: "Confirm order"
});
注意:enableRemoteModule 在 electron 版本 >= 14.0 中不再有效
Gpak
2021-11-26