-
Notifications
You must be signed in to change notification settings - Fork 1k
Description
Description
Le module d’auto-compilation de templates doT utilise exclusivement des opérations synchrones du module fs (readFileSync, readdirSync, writeFileSync).
Dans un environnement Node.js moderne, cela peut entraîner des blocages du thread principal, surtout lorsque le nombre de templates est élevé.
Problème identifié
Plusieurs appels synchrones sont utilisés dans le flux principal :
fs.readdirSync(defFolder)
fs.readFileSync(path)
fs.writeFileSync(path, ...)
Ces appels :
Bloquent l’event loop Node.js
Dégradent les performances dans les applications serveur
Rendent le module peu adapté à une utilisation en production ou dans des environnements à forte charge
Étapes pour reproduire
Créer un dossier contenant un grand nombre de fichiers .dot, .def, .jst
Appeler doT.process({ path: "./views" })
Observer un gel temporaire du processus Node.js pendant la compilation
Comportement attendu
La compilation devrait pouvoir s’exécuter sans bloquer l’event loop
Le module devrait proposer une alternative asynchrone
Comportement actuel
Toute la compilation repose sur des appels bloquants
Impossible d’intégrer proprement ce module dans un serveur HTTP actif
Impact
❗ Dégradation des performances
❗ Mauvaise scalabilité
❗ Risque de timeouts sur serveurs web
❗ Incompatible avec des architectures non bloquantes
Suggestion de correction
Ajouter une API asynchrone (processAsync par exemple) utilisant :
fs.promises.readdir
fs.promises.readFile
fs.promises.writeFile
Conserver l’API synchrone pour les scripts CLI ou les builds
Documenter clairement les cas d’usage recommandés
Contexte
Module : doT template auto-compiler
Type : Performance / Architecture
Environnement : Node.js
Gravité : Moyenne à élevée selon le volume de fichiers