0
votes

Fs.readfile retour non défini

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 commentaires

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 Vous passez des options à l'aide d'un objet contenant endoding , qui est une faute de frappe. Je suppose que vous vouliez dire coding . Si cela ne fonctionne pas, essayez d'imprimer le chemin du fichier que vous essayez de lire, c'est-à-dire: __ dirname + '/accounts.json' .


le retour du rappel devrait aller à Accread : Non, ce ne sera pas, le rappel est appelé par listifile à un moment liselfile a déjà retourné . Si vous souhaitez que le résultat soit dans Accread , vous devez utiliser la version synchrones de la fonction: fs.readfileSync . 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. ;)


4 Réponses :


1
votes

Essayez le Follwing: xxx

Comme déjà mentionné dans les commentaires, vous pouvez utiliser la version synchrone de la fonction: Fs.readfileSync aussi ..

vous pourrait emballer cela aussi dans une fonction asynchrone comme: xxx


0 commentaires

0
votes

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)


0 commentaires

0
votes

Vous pouvez créer une promesse et utiliser async / attendre pour y parvenir.

Supposons que vous ayez une structure de fichier comme ceci:

  • comptes.json
  • index.js

    dans comptes.json Vous avez ceci: xxx

    Votre fichier index.js doit être: xxx


0 commentaires

0
votes

AS du nœud v0.5.x Vous pouvez nécessiter votre JSON comme vous le souhaitez un fichier js .

var someobject = nécessite ('./wesome_json.json')

en ES6:

Importer quelque téléphone de ('./awesome_json.json')

Et si vous avez besoin de chaîne, utilisez simplement json.stringify (ToOObject)


0 commentaires