首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >环境变量配置神器!3 分钟学会 dotenv ~

环境变量配置神器!3 分钟学会 dotenv ~

作者头像
Immerse
发布2025-09-17 13:54:29
发布2025-09-17 13:54:29
10500
代码可运行
举报
文章被收录于专栏:沉浸式趣谈沉浸式趣谈
运行总次数:0
代码可运行

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI实践者。

  • • 关注公众号:#沉浸式趣谈,获取最新文章(更多内容只在公众号更新)
  • • 个人网站:https://yaolifeng.com 也同步更新。
  • • 转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程独立开发AI出海个人思考等内容。

如果本文对你有帮助,欢迎动动小手指一键三连(点赞评论转发),给我一些支持和鼓励,谢谢!


分享一个能够让环境配置管理变得优雅而简单工具——dotenv

常见操作

看看下面这些"死亡操作",你中了几条:

代码语言:javascript
代码运行次数:0
运行
复制
// 把密码直接写死在代码里
const dbConfig = {
    password: '12345678', // 提交到GitHub的那一刻,你就完了
    apiKey: 'sk-1234567890abcdef', // 5分钟内被爬虫扫走
};

// 不同环境手动改配置
// 开发环境
const API_URL = 'http://localhost:3000';
// 测试环境
const API_URL = 'http://test.example.com';
// 生产环境
const API_URL = 'http://api.example.com';
// 每次项目部署都忙着改配置,一不小心就可能出错

dotenv 环境变量配置神器

3 分钟极速上手

第 1 步:安装

代码语言:javascript
代码运行次数:0
运行
复制
npm install dotenv --save

第 2 步:创建配置文件 在项目根目录创建 .env 文件:

代码语言:javascript
代码运行次数:0
运行
复制
# 数据库配置
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_very_secret_password
DB_NAME=myapp_production

# API密钥
WECHAT_APP_ID=wx1234567890abcdef
WECHAT_SECRET=your_wechat_secret_here
JWT_SECRET=your_jwt_super_secret_key

# 服务器配置
PORT=3000
NODE_ENV=production

第 3 步:一行代码搞定所有配置

代码语言:javascript
代码运行次数:0
运行
复制
// 放在项目入口文件最前面
require('dotenv').config();

// 然后在任何地方这样用:
const dbConfig = {
    host: process.env.DB_HOST,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
};

const port = process.env.PORT || 3000;

就这么简单!

多环境切换,一键搞定

还在为开发、测试、生产环境切换头疼?dotenv 让你优雅解决:

项目结构:

代码语言:javascript
代码运行次数:0
运行
复制
my-awesome-project/
├── .env.development    # 开发环境
├── .env.test          # 测试环境
├── .env.production    # 生产环境
├── .gitignore        # 保护你的秘密
└── package.json

.gitignore(这个必须加!):

代码语言:javascript
代码运行次数:0
运行
复制
# 保护所有环境变量文件
.env
.env.local
.env.*.local

启动命令(一键切换):

代码语言:javascript
代码运行次数:0
运行
复制
# 开发环境
node -r dotenv/config app.js dotenv_config_path=.env.development

# 测试环境
node -r dotenv/config app.js dotenv_config_path=.env.test

# 生产环境
node -r dotenv/config app.js dotenv_config_path=.env.production

package.json 简化操作:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "scripts": {
        "dev": "node -r dotenv/config app.js dotenv_config_path=.env.development",
        "test": "node -r dotenv/config app.js dotenv_config_path=.env.test",
        "prod": "node -r dotenv/config app.js dotenv_config_path=.env.production"
    }
}

实战案例:从零搭建安全配置

真实项目结构:

代码语言:javascript
代码运行次数:0
运行
复制
project/
├── src/
│   ├── config/
│   │   └── database.js
│   ├── models/
│   └── app.js
├── .env.development
├── .env.production
└── .gitignore

config/database.js(安全典范):

代码语言:javascript
代码运行次数:0
运行
复制
require('dotenv').config();

const config = {
    development: {
        username: process.env.DB_USER || 'root',
        password: process.env.DB_PASSWORD,
        database: process.env.DB_NAME || 'myapp_dev',
        host: process.env.DB_HOST || 'localhost',
        dialect: 'mysql',
        logging: true,
    },
    production: {
        username: process.env.DB_USER,
        password: process.env.DB_PASSWORD,
        database: process.env.DB_NAME,
        host: process.env.DB_HOST,
        dialect: 'mysql',
        logging: false,
        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000,
        },
    },
};

module.exports = config;

app.js(安全启动):

代码语言:javascript
代码运行次数:0
运行
复制
require('dotenv').config();
const express = require('express');
const db = require('./config/database');

// 验证必需的环境变量
const requiredEnvVars = ['DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME'];
requiredEnvVars.forEach(envVar => {
    if (!process.env[envVar]) {
        console.error(`缺少必需的环境变量: ${envVar}`);
        process.exit(1);
    }
});

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

app.listen(port, () => {
    console.log(`服务器安全运行在端口 ${port}`);
});

高级技巧:让配置更智能

技巧 1:智能默认值

代码语言:javascript
代码运行次数:0
运行
复制
// 环境变量不存在时的优雅降级
const config = {
    port: process.env.PORT || 3000,
    env: process.env.NODE_ENV || 'development',
    jwtExpiresIn: process.env.JWT_EXPIRES_IN || '24h',
    bcryptRounds: parseInt(process.env.BCRYPT_ROUNDS) || 10,
};

技巧 2:类型转换

代码语言:javascript
代码运行次数:0
运行
复制
// 处理不同类型的环境变量
const serverConfig = {
    port: parseInt(process.env.PORT) || 3000,
    isProduction: process.env.NODE_ENV === 'production',
    enableLogging: process.env.ENABLE_LOGGING === 'true',
    maxUploadSize: parseInt(process.env.MAX_UPLOAD_SIZE) || 5242880, // 5MB
};

技巧 3:配置验证和错误处理

代码语言:javascript
代码运行次数:0
运行
复制
// 创建配置验证工具
const validateConfig = () => {
    const required = ['DB_HOST', 'DB_USER', 'DB_PASSWORD', 'JWT_SECRET'];
    const missing = required.filter(key => !process.env[key]);

    if (missing.length > 0) {
        throw new Error(`缺少必需的环境变量: ${missing.join(', ')}`);
    }

    console.log('所有环境变量验证通过');
};

// 使用
try {
    validateConfig();
} catch (error) {
    console.error(error.message);
    process.exit(1);
}

以上就是使用 dotenv 管理环境变量的完整指南。

通过这种方式,你可以轻松地在不同环境间切换,保护敏感信息,并保持代码的整洁和安全。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 非同质前端札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见操作
  • dotenv 环境变量配置神器
    • 3 分钟极速上手
    • 多环境切换,一键搞定
    • 实战案例:从零搭建安全配置
    • 高级技巧:让配置更智能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档