嗨,我正在尝试遵循有关Electron的教程,但是尝试从我创建的菜单中打开文件时,我总是收到此错误。
未捕获的异常: TypeError [ERR_INVALID_ARG_TYPE]:“ path”参数必须是字符串,Buffer或URL类型之一。收到的类型未定义...
这是我的职责。
function openFile() {
// Opens file dialog looking for markdown
const files = dialog.showOpenDialog(mainWindow, {
properties: ['openFile'],
filters: [{ name: 'Markdown', extensions: ['md', 'markdown', 'txt'] }]
});
// If no files
if (!files) return;
const file = files[0]; // Grabs first file path in array
// Loads file contents via path acquired via the dialog
const fileContent = fs.readFileSync(file).toString();
console.log(fileContent);
}
尝试还原到旧版本等。无济于事。
谢谢您的建议。
答案 0 :(得分:2)
请注意,showOpenDialog()
是一个异步函数,它会返回诺言。
您的正确用法是:
dialog.showOpenDialog(mainWindow, {
properties: ['openFile'],
filters: [{ name: 'Markdown', extensions: ['md', 'markdown', 'txt'] }]
}).then(result => {
const file = result.filePaths[0];
const fileContent = fs.readFileSync(file).toString();
console.log(fileContent);
}).catch(err => {
console.log(err)
});
还考虑使用readFile
代替readFileSync
以避免阻塞电子主线程。