fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]: аргумент «путь» должен быть одним из типа string, Buffer или URL. Полученный тип не определен - PullRequest
0 голосов
/ 24 марта 2019
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 (~~) вызвал ошибку.Как мне это исправить?

1 Ответ

1 голос
/ 24 марта 2019

Первая строка scanFile гласит:

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

Это указывает на то, что filepath является массивом, а не строкой (или буфером, или URL). Проверьте выходные данные оператора console.log, чтобы убедиться, что это так. Поскольку оператор if проверяет filepath[0], я бы начал с него и обновил бы код следующим образом: fs.readFile(filepath[0],"utf8", (err,data) => {, поскольку оператор if подразумевает, что filepath[0] - это значение, которое вы должны использовать

...