javascript - Electron - openShowDialog 未定义

标签 javascript electron

我正在使用 Electron,我制作了一个带有 div 的自定义标题栏,它隐藏了 2 个 div,
我希望这些 div 之一(标记为“打开”)打开文件管理器
这可以使用 shell.showItemInFolder(--dirname); 来完成。但问题是我无法从此方法中检索任何数据,另一种方法是在 Electron const{dialog} = require('electron'); 中使用 Dialog
我最想写这个console.log(dialog.openShowDialog({properties:['openFile']}));这(根据我观看的一些 youtube 视频)应该打开一个文件管理器,如果我通过这个选择一个文件,它应该记录一个未决的 promise 。但我收到一个错误 cannot get the property 'showOpenDialog'of undefined

const{dialog} = require('electron');
function openFS(){
    win.openDevTools();
    console.log(dialog.showOpenDialog({properties:['openFile']}));
}
这个openFS函数是在上面提到的div的点击上调用的。
我该如何解决?

最佳答案

cannot get the property 'showOpenDialog'of undefined


该错误表明 dialog未定义。如果您在渲染过程中执行此代码,那么您不会导入 dialog模块正确 - 它需要通过 remote 访问(假设您已经为渲染器指定了nodeIntegration: true)。就个人而言,我在主进程中处理所有对话调用,但这是一个选择问题。
const {dialog} = require('electron').remote
然而 。 . the remote module is deprecated如链接文档所示,在 Electron 12 中。我还没有使用它推荐的方法,所以我不能谈论任何问题。

远程模块在 Electron 12 中已弃用,并将在
Electron 14。它被 @electron/remote 模块取代。
// Deprecated in Electron 12:
const { BrowserWindow } = require('electron').remote

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

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

关于javascript - Electron - openShowDialog 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65842587/

相关文章:

javascript - Electron 包 : reduce the package size

node.js - 如何在我的 IDE 中添加 Intellisense

javascript - 隐藏和显示多个 div

Javascript:带有复选框过滤器的表格

javascript - 使用for循环多次显示同一个div标签

javascript - 显示名称而不是值

javascript - HighCharts Semi-Circle-Donut,去除边距和填充

node.js - 使用 Electron 在触摸条 slider 上显示值

javascript - 在 electronjs 中处理和注册协议(protocol)

python - Selenium 网络驱动程序在Mac上启动 Electron 应用程序后挂起