web-dev-qa-db-fra.com

fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]: L'argument "path" doit être de type chaîne, tampon ou URL. Type reçu non défini

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)
  })  
}  

J'ai essayé de créer une application de lecteur de musique électronique. Dans un premier temps, j'ouvre mon dossier. Lorsque j'ouvre un fichier, "TypeError [ERR_INVALID_ARG_TYPE]: l'argument" chemin "doit être de type chaîne, tampon ou URL. Type reçu non défini" cette erreur s'est produite et un message d'erreur a montré que scanFile (chemin de fichier), fs.readFile (~ ~) a provoqué une erreur. Comment dois-je le réparer?

2
SunBathe

La première ligne de scanFile se lit comme suit:

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

Cela m'indique que filepath est un tableau, pas une chaîne (ou Buffer ou URL). Vérifiez la sortie de l'instruction console.log Pour voir si c'est le cas. Étant donné que l'instruction if recherche filepath[0], Je commencerais par là et mettrais à jour le code pour lire fs.readFile(filepath[0],"utf8", (err,data) => {, car l'instruction if implique que filepath[0] Est la valeur que vous devez utiliser

2
djheru