用 dotenv 把配置从代码里抽离出来,把开发环境和生产环境分开,并让你的密钥远离 Git。
在 Kodokon 中打开本课监听端口、数据库 URL、API 密钥:这些都不该出现在源代码里。这些值在你的机器和生产环境之间会有所不同,而其中一些还是密钥。标准的解决方案是:环境变量,在开发时从一个 .env 文件里加载。用 npm install dotenv 安装 dotenv,然后在项目根目录创建这个文件。
PORT=3000
DATABASE_URL=postgres://localhost:5432/kodokon
SESSION_SECRET=change-this-value在你入口文件的最开头导入 dotenv/config:文件里的变量会被复制进 process.env。一个良好的职业习惯是:把读取工作集中到一个单独的配置模块里,在启动时校验这些变量,只要缺了一个就立刻失败。一个拒绝启动的服务器,好过一个在第一个请求上就崩溃的服务器。
import "dotenv/config";
const required = ["PORT", "SESSION_SECRET"];
for (const name of required) {
if (!process.env[name]) {
throw new Error("Missing variable: " + name);
}
}
export const config = {
port: Number(process.env.PORT),
secret: process.env.SESSION_SECRET,
isProd: process.env.NODE_ENV === "production"
};在生产环境里,没有 .env 文件:由托管平台提供真实的值,而 NODE_ENV 为 production。用 config.isProd 来调整行为:开发时输出详细日志,生产时输出克制的错误信息。另外,提交一个 .env.example 文件,用假值列出所需的变量:它在不暴露密钥的前提下记录了配置。
import express from "express";
import { config } from "./config.js";
const app = express();
if (!config.isProd) {
console.log("Development mode");
}
app.listen(config.port, () => {
console.log("Port: " + config.port);
});.env 文件里.env.example 文件的用途是什么?.gitignore