NodeJS fs.FileRead ->TypeError [ERR_INVALID_ARG_TYPE]:“path”参数必须是string、Buffer或URL类型之一,接收的类型未定义

6tr1vspr  于 2023-04-11  发布在  Node.js
关注(0)|答案(2)|浏览(191)
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]:“path”参数必须是字符串、缓冲区或URL类型之一。收到的类型为“undefined”,表示发生错误,错误消息显示scanFile(filepath)、fs.readFile(~~)导致错误。我应该如何修复它?

5us2dqdw

5us2dqdw1#

scanFile的第一行是:
if(!filepath || filepath[0] == 'undefined') return;
这表明filepath是一个数组,而不是字符串(或Buffer或URL)。检查console.log语句的输出,看看是否是这种情况。由于if语句正在检查filepath[0],因此我将从此处开始并更新代码以读取fs.readFile(filepath[0],"utf8", (err,data) => {,因为if语句意味着filepath[0 ]是应该使用的值

afdcj2ne

afdcj2ne2#

如果你使用的是switch case,那么就使用break语句。它会起作用的

相关问题