Express.js
Beginner
1 min read
Environment Configuration and Health Checks
Example
// server.js – production entry point
require('dotenv').config(); // no-op in prod if no .env file
const app = require('./app');
const db = require('./db'); // Sequelize/Mongoose instance
const PORT = process.env.PORT || 3000;
// ── Health check ──────────────────────────────────────────────
app.get('/health', async (req, res) => {
try {
await db.authenticate(); // verify DB connection
res.json({ status: 'ok', uptime: process.uptime() });
} catch (err) {
res.status(503).json({ status: 'error', detail: err.message });
}
});
// ── Start server ──────────────────────────────────────────────
const server = app.listen(PORT, () => {
console.log(`Listening on port ${PORT} (${process.env.NODE_ENV})`);
});
// ── Graceful shutdown ─────────────────────────────────────────
async function shutdown(signal) {
console.log(`${signal} received – shutting down gracefully`);
server.close(async () => {
await db.close();
console.log('DB connection closed. Exiting.');
process.exit(0);
});
// Force exit after 10 s if connections don't close
setTimeout(() => process.exit(1), 10_000).unref();
}
process.on('SIGTERM', () => shutdown('SIGTERM'));
process.on('SIGINT', () => shutdown('SIGINT'));
Related Resources
Express.js Reference
Complete tag & property list
Express.js How-To Guides
Step-by-step practical guides
Express.js Exercises
Practice what you've learned
More in Express.js