zurück zur Tech-Wiki
Tech-Wiki/Runtimes
N

Node.js

JavaScript-Runtime auf V8 für serverseitige Anwendungen.

·OpenJS·MIT

Übersicht

Was ist es?

Node.js ist die JavaScript-Runtime auf Googles V8-Engine — serverseitiges JS, async-IO, NPM-Ökosystem. Default für JS-Backends, Build-Tools, CLIs.

Quickstart

brew install nvm
nvm install --lts && nvm use --lts
node --version

Oder via Corepack für reproduzierbare Versions: corepack enable.

Typische Patterns

  • ESM statt CJS für neue Projekte: "type": "module" in package.json.
  • Native fetch seit Node 18 — kein node-fetch mehr nötig.
  • node --watch seit 20 statt Nodemon für Dev.
  • AbortController für Timeouts und Cancellation:
    const ctrl = new AbortController()
    setTimeout(() => ctrl.abort(), 5000)
    await fetch(url, { signal: ctrl.signal })
    
  • node:test als Built-in-Test-Runner für simple Cases — kein Jest-Overhead.

Gotchas / Was oft schiefgeht

  • ESM/CJS-Interop: require() in ESM nicht ohne createRequire, import in CJS nur dynamic.
  • Event-Loop-Blocking durch sync-IO oder schwere CPU-Tasks → Worker-Threads oder Streams nutzen.
  • process.env.X ist immer string | undefined — Validierung (Zod) zur Startup-Zeit.
  • Globale Module-State zwischen Requests in Serverless → unerwartete Cache-Bleeds.
  • node_modules riesig — pnpm statt npm/yarn spart massiv Disk.

Wann nicht?

CPU-bound-Workloads (Bildverarbeitung, ML-Inferenz) → Go, Rust, Python. Echte Realtime mit Microsecond-Latenzen → C++/Rust.

Eingesetzt in

Projekte(1)

Produkte(1)