2017-04-20 1 views
0

Je viens de rencontrer un étrange problème de fs.readFile() dans mon programme. Le fichier n'est pas grand (seulement 500k), c'est une chaîne JSON.stringify (obj). J'essaie de le lire et de le transmettre au début. Alors que dans le rappel de fs.readFile ("/ chemin/nom de fichier", "utf8", fonction (e, données) {}). Je n'ai que la chaîne incomplète.fs.readFile() ne lit pas les fichiers entiers et chaque fois que le contenu lu manque quelques parties

fs.readFile("/path/filename",'utf8', function (err,data) { 
      if(err) { 
       throw err; 
      } else { 
       let str = JSON.parse(data); // it will throw error by saying "SyntaxError: Unexpected end of JSON input" 
      } 
     }); 

Avez-vous rencontré ce problème? Quelle est la solution pour lire le fichier entier/complet? PS: J'ai vérifié manuellement le contenu du fichier, il est bon et complété chaîne JSON.

+0

Lorsque vous dites que vous avez vérifié manuellement le fichier, l'avez-vous fait vous-même, ou en utilisant quelque chose comme http://jsonlint.com/ Essayez simplement de l'exclure. –

+0

@Alec Bennett, j'ai utilisé l'éditeur de texte sublime pour ouvrir le fichier et vérifier le contenu du fichier, qui est une chaîne json complète. C'est bon. – Robin

Répondre

0

Je viens de comprendre ce que j'ai fait de mal dans mon programme. Mon signal de déclenchement du fichier de lecture a été envoyé "trop ​​vite" avant que le fichier d'écriture ne soit complètement terminé. J'ai mis un peu de temps à résoudre juste 100ms ce problème et je peux lire la chaîne complète de JSON pour analyser dans l'objet.

+0

Au lieu d'utiliser la promesse –