How to use NODE_ENV — Intermediate
Switch behavior between development (verbose logs, pretty output) and production (structured logs, no secrets in responses).
Learn: NODE_ENV signals runtime context. Development favors readable logs; production favors performance and security (no stack traces to clients, stricter log levels).
Supplementary examples
Branch config in knexfile
module.exports = {
development: { connection: process.env.DATABASE_URL, ... },
production: { connection: process.env.DATABASE_URL, pool: { min: 2, max: 10 }, ... },
};Course example
// config/logger.js
const isDev = process.env.NODE_ENV !== "production";
module.exports = pino(
isDev
? { transport: { target: "pino-pretty" } }
: { level: process.env.LOG_LEVEL || "info" }
);
Additional references & examples
- Node.js: process.env
How Node exposes environment variables at runtime.
- Express: Production best practices
Performance, security, and deployment recommendations.