NW.js 中如何正确调用原生文件对话框?
我在 NW.js 里想弹出系统默认的文件选择窗口,但试了几次都不行。
查文档说要用 nw.Window.get().showOpenDialog(),但一调用就报错说 showOpenDialog 不是函数。我是不是哪里弄错了?
我的代码大概是这样:
const win = nw.Window.get();
win.showOpenDialog({ multiple: false }, (files) => {
if (files) console.log(files[0]);
});
控制台直接报 TypeError,说 win.showOpenDialog is not a function。这 API 是不是改了?还是我漏了什么配置?
首先,showOpenDialog确实存在,但要用对方式。问题出在你的nw.js配置上,得确保在package.json里设置了正确的manifest字段,不然这个API根本不会生效。
在你的package.json里加上这行:
然后记得把你的app重新打包加载一下。还有个容易忽视的地方,调用showOpenDialog时最好加个window参数,像这样:
const win = nw.Window.get();win.showOpenDialog(null, { multiple: false }, (files) => {if (files && files.length) console.log(files[0]);});别走弯路,先检查配置再调用,基本就不会报错了。我当初为这事儿折腾了半天,后来发现就是配置文件的问题。希望你能顺利解决,省点力气干别的。