const protège la « boîte » (la référence), pas son contenu : modifier un champ reste possible.
1.2 · Rappel
4. Que fait await dans une fonction async ?
await suspend la fonction en attendant la Promise sans bloquer la boucle d'événements.
1.2 · Application
5. Le console.log de Salim affiche undefined juste après un appel asynchrone. Cause ?
Lancer n'est pas obtenir : le résultat arrive plus tard (callback, .then() ou await).
1.2 · Application
6. Salim enchaîne trois opérations dépendantes (fichier → base → API). Écriture recommandée ?
async/await : le code se lit dans l'ordre, sans bloquer, erreurs gérées au même endroit.
1.3 · Application
7. Salim importe son module local calculs.js en CommonJS. Syntaxe correcte ?
Module local = chemin en ./ ou ../ ; nom seul = natif (fs) ou paquet npm.
1.3 · Application
8. Salim démarre un nouveau projet et veut la syntaxe standard (même qu'en front). Choix ?
ESM = standard du langage, cohérent front/back, recommandé pour un nouveau projet.
1.3 · Arbitrage
9. Le projet de Salim mélange require et import dans le même fichier et plante. Arbitrage ?
Un système par fichier : la config décide, on ne mélange pas sans l'expliquer.
1.4 · Rappel
10. Que faut-il versionner dans Git pour un projet Node ?
La recette (json + lock) se versionne ; node_modules se régénère via npm install.
1.4 · Application
11. Salim installe un outil de redémarrage utile uniquement en développement. Commande ?
-D marque les paquets de dev : nécessaires au poste, pas en production.
1.4 · Arbitrage
12. Avant de livrer, npm audit signale une vulnérabilité dans une dépendance. Arbitrage ?
Les dépendances sont un vecteur d'attaque réel : audit → mise à jour → test → livraison.
Et après ?
Score ≥ 80 % : passez au Niveau 2 V3 (modules natifs fs/path/os, EventEmitter, streams et premier serveur HTTP — les briques système de Node).
Score entre 50 % et 80 % : reprenez les sections ratées (JS moderne 1.1, asynchrone 1.2, modules 1.3, npm 1.4), relisez les explications ci-dessus, puis refaites le test.
Score < 50 % : recommencez le niveau depuis le début en exécutant chaque snippet avec node — l'asynchrone (1.2) mérite une seconde lecture complète.