La réponse à mon problème est probablement évidente mais je ne peux pas le trouver.
Je veux réellement lire un fichier JSON sur une application Nodejs. p>
p>
var accRead = fs.readFile(__dirname + '/accounts.JSON', { endoding: 'utf8' }, function(err, data) { if (err) throw err if (data) return JSON.parse(data) })
4 Réponses :
Essayez le Follwing: Comme déjà mentionné dans les commentaires, vous pouvez utiliser la version synchrone de la fonction: Fs.readfileSync aussi .. P> vous pourrait emballer cela aussi dans une fonction asynchrone comme: p>
Essayez ce qui suit:
p>
const accounts = () => fs.readFileSync(__dirname + '/accounts.json', { endoding: 'utf8'}) const accRead = JSON.parse(accounts()) /*Logging for visualization*/ console.log(accRead)
Vous pouvez créer une promesse et utiliser async / attendre pour y parvenir.
Supposons que vous ayez une structure de fichier comme ceci: p>
dans comptes.json Vous avez ceci: p> Votre fichier index.js doit être: p>
AS du nœud v0.5.x Vous pouvez nécessiter votre en ES6: P>
Et si vous avez besoin de chaîne, utilisez simplement JSON code> comme vous le souhaitez un fichier
js code>. p>
var someobject = nécessite ('./wesome_json.json') code> p>
Importer quelque téléphone de ('./awesome_json.json') code> p>
json.stringify (ToOObject) code> p>
Le contenu du fichier est transmis au rappel, non renvoyé.
Ouais mais je l'ai ensuite mis dans "Comptes2" si ce n'est pas = non défini. Le retour du rappel devrait aller à l'abri droit?
Hey @ l.dz, bienvenue à Stackoverflow. Lorsque vous appelez
READFILE CODE> Vous passez des options à l'aide d'un objet contenant
endoding code>, qui est une faute de frappe. Je suppose que vous vouliez dire
coding code>. Si cela ne fonctionne pas, essayez d'imprimer le chemin du fichier que vous essayez de lire, c'est-à-dire:
__ dirname + '/accounts.json' code>.
le retour du rappel devrait aller à Accread i>: Non, ce ne sera pas, le rappel est appelé par
listifile code> à un moment i> où
liselfile code> a déjà retourné i>. Si vous souhaitez que le résultat soit dans
Accread code>, vous devez utiliser la version synchrones i> de la fonction:
fs.readfileSync code>. Mais ce n'est pas optimal pour la performance, car votre code bloquera alors que le fichier est complètement lu (un problème si le fichier est grand). Vous voudrez peut-être lire des appels asynchrones dans JS. J'ai trouvé Ceci récemment, il peut vous aider à vous aider. ;)