Electron里dialog.showOpenDialog为啥没反应?
我在主进程中调用dialog.showOpenDialog,点击按钮后完全没弹窗,也不报错,这是啥情况?
试过加await、try-catch,还检查了mainWindow是不是有效的BrowserWindow实例,都没问题。但就是点完没动静。
<button id="openFile">选择文件</button>
<script>
const { ipcRenderer } = require('electron');
document.getElementById('openFile').addEventListener('click', () => {
ipcRenderer.send('open-file-dialog');
});
</script>
dialog.showOpenDialog不反应,通常是因为这个API需要在主进程中调用,而不是渲染进程中。你在渲染进程中发了个消息到主进程,但是主进程那边可能没有监听到或者处理不当。首先,确保你的主进程监听了
open-file-dialog事件,并且正确地调用了dialog.showOpenDialog。你可以在主进程文件里加上类似这样的代码:然后,在渲染进程中接收选中的文件路径:
确保这两段代码都在各自的进程中正确运行,通信通道也畅通无阻。这样应该就能解决点击按钮后没有弹窗的问题了。如果还是不行,检查一下控制台有没有什么隐晦的错误信息。有时候一些小疏忽会导致大问题。