电子中的奇怪错误。未捕获的异常:TypeError [ERR_INVALID_ARG_TYPE]:“路径”

Posted

技术标签:

【中文标题】电子中的奇怪错误。未捕获的异常:TypeError [ERR_INVALID_ARG_TYPE]:“路径”【英文标题】:Strange error in Electron. Uncaught Exception: TypeError [ERR_INVALID_ARG_TYPE]: The "path" 【发布时间】:2020-01-03 09:36:46 【问题描述】:

您好,我正在尝试学习有关 Electron 的教程,但是在尝试从我制作的菜单中打开文件时,我不断收到此错误。

未捕获的异常: TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 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);

尝试恢复到旧版本等。无济于事。

感谢您的建议。

【问题讨论】:

【参考方案1】:

注意这里,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 以避免阻塞Electron 主线程。

【讨论】:

任何关注电子升级教程的人,这将解决你的问题

以上是关于电子中的奇怪错误。未捕获的异常:TypeError [ERR_INVALID_ARG_TYPE]:“路径”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的 TypeError:javascript 中的非法调用

Render.js 文件(电子应用程序)中的“未捕获的 TypeError:React.createClass 不是函数”

如何解决反应身份验证中的未捕获(承诺中)TypeError?

未捕获的 TypeError:forEach 不是 javascript 函数中的函数错误

Javascript 中的数组错误:未捕获的 TypeError:无法读取未定义的属性“x”

slick.js 中的错误:“未捕获的 TypeError:无法读取属性 'add' of null”