Javascript fs.FileRead->;TypeError[ERR_INVALID_ARG_TYPE]:该;路径“;参数必须是字符串、缓冲区或URL类型之一。接收类型未定义

Javascript fs.FileRead->;TypeError[ERR_INVALID_ARG_TYPE]:该;路径“;参数必须是字符串、缓冲区或URL类型之一。接收类型未定义,javascript,node.js,electron,fs,Javascript,Node.js,Electron,Fs,我尝试制作电子音乐播放器应用程序。第一步是打开我的文件。打开文件时,“TypeError[ERR\u INVALID\u ARG\u TYPE]:“path”参数必须是字符串、缓冲区或URL.Received TYPE undefined类型中的一个,因为发生了错误,错误消息显示scanFile(filepath)、fs.readFile(~~)导致了错误。如何修复它?扫描文件的第一行内容如下: 如果(!filepath | | filepath[0]=='undefined')返回 这表明fi

我尝试制作电子音乐播放器应用程序。第一步是打开我的文件。打开文件时,“TypeError[ERR\u INVALID\u ARG\u TYPE]:“path”参数必须是字符串、缓冲区或URL.Received TYPE undefined类型中的一个,因为发生了错误,错误消息显示scanFile(filepath)、fs.readFile(~~)导致了错误。如何修复它?

扫描文件的第一行内容如下:

如果(!filepath | | filepath[0]=='undefined')返回


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

什么:
console.log(filepath)
outputs?因为错误很明显,您传递的不是字符串、缓冲区或URL。@MarcosCasagrande啊,这只是检查代码。我忘了擦除。Thx:)如果用户打开对话框,但在未选择文件的情况下取消链接,我会从
readFile
writeFile
unlink
收到相同的错误。如何避免或解决此错误?
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)
  })  
}