Node.js

Erkannt über package.json. npm, yarn, pnpm oder bun aus dem Lockfile.

Siehe Buildpacksfür Detection und Versionspolitik. Ein Repo, das auch wie ein statisches Frontend aussieht, wird hier gebaut und dann vom staticBuildpack ausgeliefert.

Erkennt

package.json im Base directory.

Versionen

Default ist Node.js 24. Veröffentlichte Lines Stand September 2026: 22, 24, 25, 26. Du bekommst den neuesten Patch der angefragten Minor.

Pinnen, in dieser Reihenfolge:

  • .node-version
  • .nvmrc
  • engines.node in package.json (ein Range wie ^22 nimmt die höchste passende veröffentlichte Version)

Ein führendes v wird entfernt.

Install und Build

Das Lockfile wählt den Package-Manager: zuerst bun.lock oder bun.lockb (oder package.json "packageManager": "bun@…"), dann pnpm-lock.yaml, dann yarn.lock, sonst npm. Ein Lockfile ist Pflicht (npm ci oder ein frozen Install). Ohne scheitert der Build.

Hat package.json ein build-Skript, läuft das (bun run build für Bun, sonst npm run build). Ein heroku-postbuild-Skript läuft danach, wenn vorhanden. Dev-Dependencies werden für das Run-Image entfernt, außer Next.js-Apps, die mit einem TypeScript-next.config.* starten (die behalten typescript beim Launch).

Yarn und pnpm gehen über Corepack. Bun kommt vom Nodion-Binary-Mirror (nicht bun.sh zur App-Build-Zeit) und bleibt beim Launch auf PATH, damit ein Start-Skript mit bun funktioniert. Der Default-Prozess bleibt das Start-Skript oder node, nicht auf Bun umgeschrieben. Launch setzt NODE_ENV=production und legt node_modules/.bin auf PATH.

Start-Command

Der erste Treffer gewinnt:

  1. Das start-Skript in package.json
  2. Ein bekannter SSR-Framework-Default (siehe unten)
  3. node server.js, index.js oder app.js, wenn diese Datei existiert
  4. node .

Mit einer Procfile überschreiben. Auf PORT lauschen.

Frameworks

  • Next.js: next start, außer output: 'export', das ist eine statische Site (out/).
  • Nuxt: node .output/server/index.mjs
  • SvelteKit: static mit adapter-static (build/), oder node build mit adapter-node
  • Remix / React Router: npx remix-serve ./build/server/index.js
  • Astro: static dist/, oder node ./dist/server/entry.mjs wenn Output server oder hybrid ist
  • Angular, Gatsby, Create React App, Eleventy, Vite: als static Output behandelt

PHP + Node (Laravel mit Vite) und Ruby + Node (Rails mit JS) sind Polyglot-Gruppen. Siehe PHPund Ruby.

Gib deinem Agenten eine Cloud.

Bis zu 15 € Guthaben beim Registrieren.

Weiter mit GitHub

oder per E-Mail

Bleib auf dem Laufenden.

Produktnews, kein Spam. Jederzeit abbestellen.