API Node.js (nodejs.org)
Condense la documentation de l'API Node.js en ce qu'un modèle a tendance à mal comprendre : les valeurs par défaut dangereuses, les pièges, les déprécations. Chaque affirmation se termine par sa page nodejs.org.
Version couverte
La documentation lue est la v26.13.0. De nombreux projets utilisent la ligne LTS v24, donc les références indiquent ce qui est plus récent : "ajouté dans v25.x" ou "ajouté dans v26.x" signifie absent de v24 sauf si une version de rétroportage est donnée. https://nodejs.org/docs/latest/api/
Avant de vous fier à une fonctionnalité signalée, vérifiez process.version ou détectez la fonctionnalité (process.features.typescript, process.features.require_module). https://nodejs.org/docs/latest/api/process.html
Lisez les règles ci-dessous, puis ouvrez le fichier de référence correspondant.
Règles à plus forte valeur ajoutée
- N'appelez jamais
access(),exists()oustat()avant d'ouvrir un fichier : ouvrez directement et gérezENOENT/EEXIST(drapeau'wx'pour création exclusive). https://nodejs.org/docs/latest/api/fs.html#fsaccesspath-mode-callback - Fermez chaque
FileHandleexplicitement, idéalement avecawait using. UnFileHandlelaissé au GC lève une erreur. https://nodejs.org/docs/latest/api/deprecations.html#DEP0137 - Composez les flux avec
pipeline(), pas avec des chaînes.pipe(), et respectez le retourfalsedewrite(). https://nodejs.org/docs/latest/api/stream.html#readablepipedestination-options - Ajoutez un écouteur
'error'à chaque émetteur, flux, socket, requête et processus fils : un'error'non géré plante le processus. https://nodejs.org/docs/latest/api/events.html#error-events - Branchez sur
err.code, jamais surerr.message. https://nodejs.org/docs/latest/api/errors.html#errorcode - Définissez
process.exitCodeau lieu d'appelerprocess.exit(), ce qui peut tronquer la sortie standard. https://nodejs.org/docs/latest/api/process.html#processexitcode - Ne reprenez jamais le travail après
'uncaughtException': nettoyez de manière synchrone et quittez. https://nodejs.org/docs/latest/api/process.html#warning-using-uncaughtexception-correctly - Préférez
queueMicrotask()à l'ancienprocess.nextTick(). https://nodejs.org/docs/latest/api/process.html#when-to-use-queuemicrotask-vs-processnexttick - Utilisez
execFile()/spawn()sans shell. Passerargsavecshell: truene les échappe pas. https://nodejs.org/docs/latest/api/deprecations.html#DEP0190 - Consommez chaque corps de réponse client HTTP (
res.resume()au moins), attachezreq.on('error'), et rappelez-vous quetimeoutn'annule pas : appelezdestroy(). https://nodejs.org/docs/latest/api/http.html#class-httpclientrequest - Gardez
headersTimeoutnon nul sur les serveurs sans proxy inverse. https://nodejs.org/docs/latest/api/http.html#serverheaderstimeout - Utilisez l'
URLWHATWG.url.parse()est déprécié et aucun CVE n'est émis pour cela. https://nodejs.org/docs/latest/api/deprecations.html#DEP0169 path.isAbsolute()n'empêche pas le parcours de chemin, etpath.normalize()est lexical et peut modifier la façon dont le système résout le chemin : résolvez, puis vérifiez que le résultat reste dans la racine. https://nodejs.org/docs/latest/api/path.html#pathisabsolutepath- Utilisez
Buffer.alloc()par défaut,Buffer.subarray()pour les vues, et jamaisnew Buffer(). https://nodejs.org/docs/latest/api/deprecations.html#DEP0005 - Comparez les secrets avec
crypto.timingSafeEqual()sur des tampons de même longueur. https://nodejs.org/docs/latest/api/crypto.html#cryptotimingsafeequala-b - Définissez
maxOutputLengthlors de la décompression de données non fiables avec zlib (par défautbuffer.kMaxLength). https://nodejs.org/docs/latest/api/zlib.html#class-options - Définissez
"type"danspackage.json, et mettez"default"en dernier dans les conditions"exports". https://nodejs.org/docs/latest/api/packages.html#determining-module-system require()d'ESM fonctionne pour les graphes synchrones.awaitde niveau supérieur n'importe où dans le graphe lèveERR_REQUIRE_ASYNC_MODULE. https://nodejs.org/docs/latest/api/modules.html#loading-ecmascript-modules-using-require- La suppression de types exécute
.tssans vérification de type : pas deenum, extensions.tsexplicites,import type, et pas depathsdanstsconfig. C'est stable depuis v25.2.0 (rétroporté dans v24.12.0), détectez-le avecprocess.features.typescript. https://nodejs.org/docs/latest/api/typescript.html#typescript-features , https://nodejs.org/docs/latest/api/typescript.html#type-stripping - Enregistrez les hooks de module avec
module.registerHooks().module.register()est déprécié dans v26. https://nodejs.org/docs/latest/api/deprecations.html#DEP0205 - Préférez
AsyncLocalStorageàasync_hooks.createHook(). https://nodejs.org/docs/latest/api/async_hooks.html - Utilisez
await t.test()pour les sous-tests dansnode:test. https://nodejs.org/docs/latest/api/test.html#subtests node:vmet WASI ne sont pas des bacs à sable, et le modèle de permission n'est pas un moyen sûr d'exécuter du code non fiable : ne les utilisez jamais pour cela. https://nodejs.org/docs/latest/api/permissions.html#process-based-permissions- Supprimez les serveurs, flux et processus fils avec
using/await using, pas unAbortSignal. Gardez les signaux pour l'annulation et les timeouts. https://nodejs.org/docs/latest/api/deprecations.html#DEP0209 dns.lookup()estgetaddrinfosur le pool de threads, pas une requête DNS. https://nodejs.org/docs/latest/api/dns.html#implementation-considerations- Dimensionnez les pools avec
os.availableParallelism(). https://nodejs.org/docs/latest/api/os.html#osavailableparallelism node:sqlite: liez les paramètres, n'interpolez jamais dans du SQL. https://nodejs.org/docs/latest/api/sqlite.html#binding-parameters- Exécutez l'IC avec
--pending-deprecationpour faire apparaître les déprécations. https://nodejs.org/docs/latest/api/deprecations.html
Fichiers de référence
| Fichier | Lisez-le pour |
|---|---|
| references/fs.md | TOCTOU, FileHandle, readFile/writeFile, rm, glob, fs.watch |
| references/path-and-url.md | path, parcours, URLs file:, URL WHATWG, querystring |
| references/crypto.md | KeyObject, timingSafeEqual, hachage, pbkdf2, scrypt, algorithmes faibles |
| references/ciphers-and-webcrypto.md | Tags AEAD, GCM, enveloppement de clé, subtle, formats de clé |
| references/streams.md | pipeline, contre-pression, highWaterMark, finished, implémentation de flux |
| references/web-streams-and-stream-iter.md | Web Streams, node:stream/iter |
| references/buffer.md | alloc versus allocUnsafe, encodages, Blob |
| references/zlib.md | bombes de décompression, vidage, Zstd |
| references/http-client.md | http.request, agents, keep-alive, proxy |
| references/http-server.md | timeouts, arrêt gracieux, serveurs HTTPS |
| references/net-dns-dgram.md | TCP, BlockList, dns.lookup versus resolve, UDP |
| references/tls.md | SNI, chiffrements, magasin de CA, reprise de session |
| references/http2.md | serveur sécurisé, allowHTTP1, durcissement |
| references/process.md | codes de sortie, signaux, uncaughtException, rejets |
| references/cli-and-env-files.md | NODE_OPTIONS, --env-file, --watch |
| references/permissions.md | --permission, lacunes connues |
| references/errors.md | error.code, cause, codes d'erreur |
| references/events-and-timers.md | captureRejections, events.once, EventTarget, timers |
| references/async-context-and-diagnostics-channel.md | AsyncLocalStorage, diagnostics_channel |
| references/util-and-console.md | util, Console |
| references/os-tty-readline-repl.md | os, tty, readline, REPL |
| references/test-runner.md | sous-tests, isolation, couverture, rapporteurs, bouchons |
| references/assert-and-bench.md | node:assert/strict, égalité profonde, node:bench |
| references/esm-and-commonjs.md | "type", importations JSON, import.meta, require(esm) |
| references/packages.md | "exports", "imports", conditions, paquets doubles |
| references/typescript-and-module-hooks.md | suppression de types, registerHooks, findPackageJSON |
| references/globals.md | fetch, AbortSignal, globales |
| references/child-process.md | execFile versus exec, maxBuffer, IPC |
| references/worker-threads-and-cluster.md | pools, listes de transfert, cluster |
| references/vm-wasi-vfs.md | vm, WASI, node:vfs |
| references/performance-and-profiling.md | perf_hooks, instantanés du tas |
| references/debugging-and-reports.md | inspecteur, rapports de diagnostic |
| references/sqlite.md | Database, valeurs par défaut, liaison, conversion de type |
| references/sea-and-native.md | SEA, règles Node-API, node:ffi |
| references/deprecations.md | codes DEP, API supprimées, codemods |
Les pages lues, la version et la date de récupération sont listées dans SOURCES.md.