Node.js 环境变量配置指南

环境变量
环境变量是操作系统提供的一种机制,用于存储和传递信息给应用程序,在 Node.js 中,环境变量可以用来配置应用程序的行为,例如设置端口、数据库连接信息等,正确配置环境变量可以使得应用程序在不同的环境(开发、测试、生产)中运行时具有不同的配置。
Node.js 环境变量配置方法
系统层面配置
在操作系统中设置环境变量,可以在应用程序启动前将其传递给 Node.js。
以 Windows 为例,可以通过以下步骤设置环境变量:
(1)右键点击“此电脑”,选择“属性”;
(2)点击“高级系统设置”;
(3)在“系统属性”窗口中,点击“环境变量”;
(4)在“系统变量”下,点击“新建”;
(5)输入变量名和变量值,NODE_ENV=development;
(6)点击“确定”保存设置。
以 Linux 和 macOS 为例,可以在命令行中直接使用 export 命令设置环境变量:
export NODE_ENV=development
项目层面配置

在项目根目录下创建一个 .env 文件,用于存储项目级别的环境变量,在 Node.js 应用程序中,可以使用 dotenv 库来加载这些环境变量。
安装 dotenv 库:
npm install dotenv
在项目入口文件(如 app.js)中引入并加载 .env 文件:
require('dotenv').config();.env 文件示例:
NODE_ENV=development
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=root通过命令行参数传递
可以在启动 Node.js 应用程序时,通过命令行参数传递环境变量。
node app.js --env=production
在应用程序中,可以通过 process.argv 获取传递的参数:
const env = process.argv[2];
环境变量配置示例
以下是一个简单的 Node.js 应用程序,演示如何使用环境变量:

const http = require('http');
const dotenv = require('dotenv');
dotenv.config();
const port = process.env.PORT || 3000;
const hostname = process.env.HOSTNAME || 'localhost';
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end(`Hello, World! Running on ${hostname} at port ${port}`);
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});环境变量最佳实践
- 避免将敏感信息(如密码、密钥等)直接写入代码库或版本控制系统中。
- 使用环境变量来区分不同环境(开发、测试、生产)的配置。
- 使用环境变量命名规范,例如使用
UPPER_CASE和_分隔符。 - 在生产环境中,确保环境变量不会被意外修改。
FAQs
Q1:如何在不同环境中切换环境变量?
A1:可以在操作系统中设置不同的环境变量值,或者在项目根目录下创建不同的 .env 文件(如 .env.development、.env.production),然后在应用程序中加载相应的文件。
Q2:如何将环境变量传递给子进程?
A2:可以通过 process.env 对象将环境变量传递给子进程,使用 child_process 模块执行子进程时,可以设置 env 选项:
const { spawn } = require('child_process');
const child = spawn('some-command', ['arg1', 'arg2'], { env: process.env });图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/154960.html



![如何优化[Bower配置]?探讨最佳实践与常见问题解答](https://kos-kfy.uploads.cn/wp-content/uploads/2025/12/20251204070026176480282659365.jpg?x-oss-process=image/resize,m_fill,w_480,h_300,limit_0)
