gpt4 book ai didi

Electron :dialog.showOpenDialog不返回 promise 吗?

转载 作者:行者123 更新时间:2023-12-01 09:12:23 26 4
gpt4 key购买 nike

我想从渲染的脚本中显示一个“打开对话框”。

我从不同的来源获得冲突的信息,但是据我所知,https://electronjs.org/docs/api/dialog上的文档建议我应该可以使用:

const dialog = require('electron').remote.dialog;
dialog.showOpenDialog({ title: '…', defaultPath: '…' })
.then(data=>console.log(data));

我收到的错误消息是:
TypeError: dialog.showOpenDialog(...).then is not a function

这表明 dialog.showOpenDialog()没有按照文档返回 promise 。该文档中的示例也不适合我。

我知道我可以使用 dialog.showOpenDialog(options,callback),并且已经成功完成了操作,但是为什么我不能使用 .then()呢?

我还注意到,如果我包括可选的 BrowserWindow参数,它将挂起,因此问题可能更广泛。

更新:

我已经接受了以下有关版本的@rball答案。

看来我仍在运行Electron 5.x,而当前版本是6.x。文档中没有特别提及,但返回结果似乎在两个版本之间有所变化。

更新到新的主要版本并不直观。这是我要做的更新:
npm outdated
npm install electron@latest -g --save

更新2:

为了完整起见,以下是我用来容纳两个不同版本的Electron的代码:
if(dialog.showOpenDialog.then)
dialog.showOpenDialog({
title: 'Title',
defaultPath: '…'
})
.then(result=> {
if(result.canceled) return;
var files=result.filePaths;
// process
});
else
dialog.showOpenDialog({
title: 'Title',
defaultPath: '…'
},result=> {
if(result===undefined) return;
var files=result;
// process
});

最佳答案

运行npm outdated并检查您的版本。在我的版本中,showOpenDialog返回的是字符串数组,而不是 promise 。更新后,它起作用了。

关于 Electron :dialog.showOpenDialog不返回 promise 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57839415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com