Node.js

Herkend aan package.json. npm, yarn, pnpm of bun op basis van de lockfile.

Stapsgewijze deployhandleidingen: Node.js, Next.js, Nuxt, SvelteKit, Astro.

Zie Buildpacksvoor hoe detectie en het versiebeleid werken. Een repository die ook als statische frontend wordt herkend, wordt hiermee gebouwd en daarna uitgeleverd door het staticbuildpack.

Detectie

package.json in de Base directory.

Versies

Standaard is Node.js 24. Gepubliceerde versielijnen per september 2026: 22, 24, 25, 26. Je krijgt de nieuwste patchversie binnen de gevraagde minorversie.

Vastzetten, in deze volgorde:

  • .node-version
  • .nvmrc
  • engines.node in package.json (een range zoals ^22 kiest de hoogste gepubliceerde versie die past)

Een v aan het begin wordt verwijderd.

Installatie en build

De lockfile bepaalt welke package manager wordt gebruikt: eerst bun.lock of bun.lockb (of "packageManager": "bun@…" in package.json), dan pnpm-lock.yaml, dan yarn.lock, anders npm. Een lockfile is verplicht (npm ci of een frozen install). Zonder lockfile mislukt de build.

Heeft package.json een build-script, dan draait dat (bun run build voor Bun, anders npm run build). Daarna draait een heroku-postbuild-script, als dat er is. Dev-dependencies worden voor de run-image verwijderd, behalve bij Next.js-apps die starten met een TypeScript-next.config.* (die houden TypeScript bij het starten).

Yarn en pnpm lopen via Corepack. Bun wordt geïnstalleerd vanaf de binaire mirror van Nodion (niet vanaf bun.sh tijdens de app-build) en blijft bij de start op PATH staan, zodat een startscript dat bun aanroept werkt. Het standaardproces blijft het startscript of node; Nodion herschrijft het niet naar Bun. Bij het starten wordt NODE_ENV=production gezet en komt node_modules/.bin op PATH.

Startcommando

De eerste match wint:

  1. Het start-script in package.json
  2. De standaard van een bekend SSR-framework (zie hieronder)
  3. node server.js, index.js of app.js, als dat bestand bestaat
  4. node .

Overschrijf het met een Procfile. Je app moet luisteren op PORT.

Frameworks

  • Next.js: next start, behalve bij output: 'export', dat een statische site oplevert (out/).
  • Nuxt: node .output/server/index.mjs
  • SvelteKit: statisch met adapter-static (build/), of node build met adapter-node
  • Remix / React Router: npx remix-serve ./build/server/index.js
  • Astro: statische dist/, of node ./dist/server/entry.mjs als de output server of hybrid is
  • Angular, Gatsby, Create React App, Eleventy, Vite: behandeld als statische output

PHP + Node (Laravel met Vite) en Ruby + Node (Rails met JS) zijn polyglot-groepen. Zie PHPen Ruby.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.