Leçon 8 / 15

Lire un fichier avec node:fs

20 min Node.js — premiers scripts et serveur HTTP Gratuit

Objectif : Lire de manière asynchrone le fichier des commandes et afficher son contenu brut dans le terminal.

Quand les commandes sont enregistrées dans un fichier, votre script doit pouvoir les récupérer avant de les exploiter. Dans cette leçon, vous allez lire data/commandes.json sans bloquer le fonctionnement de Node.js et afficher le texte obtenu pour vérifier que le chemin et l’encodage sont corrects.

Vous avez déjà préparé le fichier JSON et le projet en modules ES dans les leçons précédentes. Ici, vous n’interprétez pas encore la syntaxe JSON : vous lisez simplement les caractères du fichier. La conversion en données JavaScript sera traitée dans la prochaine leçon.

Lire un fichier avec node:fs/promises

Node.js fournit des modules intégrés pour accéder au système de fichiers. Pour une lecture asynchrone, vous importez readFile depuis node:fs/promises. Le préfixe node: désigne un module fourni par Node.js : aucune dépendance externe n’est nécessaire.

La fonction readFile reçoit le chemin du fichier et l’encodage souhaité. Avec "utf8", elle renvoie une chaîne de caractères lisible plutôt qu’un bloc de données binaires. L’opération étant asynchrone, vous utilisez await dans une fonction asynchrone ou au niveau supérieur d’un module ES, comme dans l’exemple ci-dessous.

Mettre à jour le script principal

Depuis la racine du projet, le chemin data/commandes.json désigne le fichier créé précédemment. Conservez le calcul de démonstration BR-1042, puis ajoutez la lecture et l’affichage du contenu brut. Remplacez entièrement src/serveur.js par le fichier complet suivant :

JavaScript
import { readFile } from "node:fs/promises";
import { calculerTotal } from "./calculer-total.js";

const commandeDemonstration = {
  reference: "BR-1042",
  montants: [18.5, 12]
};

const total = calculerTotal(commandeDemonstration.montants);
console.log(`Commande ${commandeDemonstration.reference} : ${total} €`);

const contenuCommandes = await readFile("data/commandes.json", "utf8");
console.log("Contenu brut de data/commandes.json :");
console.log(contenuCommandes);
Aperçu du rendu
Chargement de l'aperçu…
Résultat attendu
Commande BR-1042 : 30.5 €
Contenu brut de data/commandes.json :
[Le tableau JSON complet présent dans data/commandes.json s’affiche ici]

Enregistrez le fichier, puis exécutez la commande suivante depuis le répertoire racine du projet. La première ligne confirme que le calcul précédent fonctionne toujours ; les lignes suivantes reproduisent le contenu du fichier de commandes.

Terminal
node src/serveur.js
Résultat attendu
Commande BR-1042 : 30.5 €
Contenu brut de data/commandes.json :
[
  ...
]

Comprendre le résultat

L’expression avec await attend que la lecture soit terminée avant de poursuivre. La variable contenuCommandes reçoit alors le texte complet du fichier. Si celui-ci contient trois commandes, vous voyez leur tableau et leurs champs tels qu’ils sont enregistrés, avec les retours à la ligne et les caractères du fichier.

À ce stade, le contenu reste une chaîne : les références, statuts et montants ne sont pas encore des propriétés d’objets JavaScript accessibles par le script. Vous avez seulement vérifié que Node.js peut lire le bon fichier en UTF-8. La prochaine leçon portera sur la conversion de ce texte et sur l’écriture de données JSON.

À retenir

  • Importez `readFile` depuis le module intégré `node:fs/promises`.
  • Précisez `"utf8"` pour récupérer le contenu sous forme de chaîne lisible.
  • Utilisez `await` pour attendre la fin de la lecture asynchrone.
  • Depuis la racine du projet, vérifiez le chemin `data/commandes.json` et affichez le contenu brut avant de le convertir.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.