Node.js

Detetado a partir do package.json. npm, yarn, pnpm ou bun conforme o lockfile.

Guias de deploy passo a passo: Node.js, Next.js, Nuxt, SvelteKit, Astro.

Consulte Buildpackspara ver como funcionam a deteção e a política de versões. Um repositório que também pareça um frontend estático é compilado aqui e, depois, o buildpack staticserve os ficheiros.

Deteção

package.json no Base directory.

Versões

A versão por omissão é o Node.js 24. Linhas publicadas em setembro de 2026: 22, 24, 25, 26. Recebe o patch mais recente da versão minor pedida.

Para fixar a versão, por esta ordem:

  • .node-version
  • .nvmrc
  • engines.node em package.json (um intervalo como ^22 escolhe a versão publicada mais alta compatível)

Um v inicial é removido.

Instalação e build

O lockfile determina o gestor de pacotes: primeiro bun.lock ou bun.lockb (ou "packageManager": "bun@…" em package.json), depois pnpm-lock.yaml, depois yarn.lock e, caso contrário, npm. O lockfile é obrigatório (npm ci ou uma instalação frozen). Sem ele, o build falha.

Se o package.json tiver um script build, este é executado (bun run build para Bun, caso contrário npm run build). Depois, é executado um script heroku-postbuild, se existir. As dependências de desenvolvimento são removidas da imagem de execução (run image), exceto nas aplicações Next.js que arrancam com um next.config.* em TypeScript (estas mantêm o TypeScript no arranque).

O Yarn e o pnpm passam pelo Corepack. O Bun é instalado a partir do mirror de binários da Nodion (não do bun.sh durante o build da aplicação) e fica no PATH no arranque, para que um script de arranque que chame bun funcione. O processo por omissão continua a usar o script de arranque ou node, sem ser reescrito para Bun. No arranque, é definido NODE_ENV=production e node_modules/.bin é adicionado ao PATH.

Comando de arranque

Aplica-se a primeira opção disponível:

  1. O script start em package.json
  2. O comando por omissão de um framework SSR conhecido (ver abaixo)
  3. node server.js, index.js ou app.js, se esse ficheiro existir
  4. node .

Pode substituí-lo por um Procfile. A aplicação deve escutar em PORT.

Frameworks

  • Next.js: next start, exceto com output: 'export', que gera um site estático (out/).
  • Nuxt: node .output/server/index.mjs
  • SvelteKit: estático com adapter-static (build/), ou node build com adapter-node
  • Remix / React Router: npx remix-serve ./build/server/index.js
  • Astro: dist/ estático, ou node ./dist/server/entry.mjs quando o output é server ou hybrid
  • Angular, Gatsby, Create React App, Eleventy, Vite: tratados como saída estática

PHP + Node (Laravel com Vite) e Ruby + Node (Rails com JS) são grupos poliglotas. Consulte PHPe Ruby.

Dê uma cloud ao seu agente.

Ganhe até 15 € de crédito ao registar-se.

Continuar com o GitHub

ou com e-mail

Fique a par das novidades.

Novidades do produto, sem spam. Pode cancelar a subscrição a qualquer momento.