【问题标题】:fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL. Received type undefinedfs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收类型未定义
【发布时间】:2019-08-15 00:32:09
【问题描述】:
function openFileDialog() {
  dialog.showOpenDialog(win, {
    properties: ['openFile']
  } , filepath  => {

    if (filepath) {
      fs.writeFile('path.txt', filepath, function (err, data) {
        if (err) console.log(err);
      });
      scanFile(filepath)
    }
  })
}

function scanFile(filepath) {
  if(!filepath || filepath[0] == 'undefined') return;
  console.log(filepath)
  fs.readFile(filepath,"utf8", (err,data) => { // ----> *ERROR*
    if(err) console.log(err);
    var arr = [];
    if (data.substr(-4) === '.mp3' || data.substr(-4) === '.m4a'
    || data.substr(-5) === '.webm' || data.substr(-4) === '.wav'
    || data.substr(-4) === '.aac' || data.substr(-4) === '.ogg'
    || data.substr(-5) === '.opus') {
    arr.push(files[i]);
  }
  var objToSend = {};
    objToSend.files = arr;
    objToSend.path = filepath;

    win.webContents.send('selected-files', objToSend)
  })  
}  

我尝试制作电子音乐播放器应用程序。第一步是打开我的文件。当我打开文件时,“TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收到的类型未定义“发生错误并且错误消息显示 scanFile(filepath)、fs.readFile(~ ~) 导致错误。我该如何解决?

【问题讨论】:

  • 什么:console.log(filepath) 输出?因为错误很明确,所以您传递的不是字符串、缓冲区或 URL。
  • @MarcosCasagrande 啊这只是检查代码。我忘记抹掉了。谢谢 :)

标签: javascript node.js electron fs


【解决方案1】:

scanFile 的第一行写着:

if(!filepath || filepath[0] == 'undefined') return;

这向我表明filepath 是一个数组,而不是一个字符串(或缓冲区或 URL)。检查console.log 语句的输出,看看是否是这种情况。由于if 语句正在检查filepath[0],我将从那里开始并更新代码以读取fs.readFile(filepath[0],"utf8", (err,data) => {,因为if 语句暗示filepath[0] 是您应该使用的值

【讨论】:

  • 如果用户打开对话框,我从readFilewriteFileunlink 收到相同的错误,但随后在没有选择文件的情况下取消它。如何避免或解决此错误?
猜你喜欢
  • 2020-08-22
  • 2020-09-21
  • 2019-12-23
  • 2021-08-18
  • 2019-12-14
  • 2021-09-08
  • 2020-12-30
  • 2022-01-12
相关资源
最近更新 更多