Langsung ke konten

Node.js & Express ​

Berlaku untuk Express, Fastify, Koa, Hono, NestJS, dan server Node.js lainnya.

Aplikasi minimal ​

js
// server.js
const express = require('express')

const app = express()
const port = process.env.PORT || 8080

app.get('/', (req, res) => res.send('Hello from Express'))

app.listen(port, '0.0.0.0', () => console.log(`listening on ${port}`))
json
{
  "scripts": { "start": "node server.js" },
  "dependencies": { "express": "^5.1.0" }
}

Apa yang dideteksi Zenavo ​

zbpack membangunnya sebagai Node.js:

LangkahPerintah
Instalnpm install, pnpm install, yarn install, atau bun install, mengikuti lockfile di repositori (yarn bila tidak ada)
Buildskrip build, bila ada (TypeScript, bundler)
Startskrip start; bila tidak ada, node index.js

Versi Node.js diambil dari engines.node di package.json (22 bila tidak diatur):

json
"engines": { "node": "22" }

Untuk memakai perintah lain, atur ZBPACK_BUILD_COMMAND atau ZBPACK_START_COMMAND di Settings → Build → zbpack options (Rencana Build).

Deploy ​

  1. Add Service → GitHub, pilih repositori dan branch.
  2. Tambahkan variabel, klik Next, pastikan pratinjau menampilkan nodejs, lalu klik Deploy.
  3. Buat domain di tab Networking.

Hubungkan database ​

Tambahkan database ke proyek dan rujuk variabelnya dari layanan aplikasi:

sh
DATABASE_URL=${POSTGRESQL_CONNECTION_STRING}
REDIS_URL=${REDIS_CONNECTION_STRING}

Jalankan migrasi saat aplikasi mulai, bukan saat build: build tidak bisa menjangkau database proyek. Skrip predeploy di package.json berjalan sebelum start setiap kali layanan mulai:

json
"scripts": {
  "predeploy": "node migrate.js",
  "start": "node server.js"
}

TypeScript ​

Kompilasi di skrip build lalu jalankan hasilnya:

json
"scripts": {
  "build": "tsc",
  "start": "node dist/server.js"
}

Simpan typescript di dependencies atau devDependencies; keduanya dipasang untuk build.

Masalah umum ​

GejalaPenyebab
Deployment tidak pernah sehatServer mendengarkan di localhost atau port tetap. Dengarkan di 0.0.0.0 dan process.env.PORT.
Cannot find module saat startSkrip start menunjuk file yang tidak dihasilkan build, atau ada dependensi yang tidak tercantum di package.json.
Package manager yang dipakai salahLockfile tidak ada atau ada dua. Simpan tepat satu.
File yang diunggah hilang setelah deployDisk kontainer diganti di setiap deploy. Gunakan volume atau object storage.

Tidak berafiliasi dengan Zeabur.