在 Linux 环境中,Node.js 的配置文件自定义可分为系统级环境配置(影响全局 Node.js 运行)、项目级配置管理(适配不同环境)和运行时内存限制三类场景,以下是具体方法:
系统级配置主要用于设置 Node.js 的全局安装路径、环境变量(如 NODE_ENV)等,适用于所有用户和项目。
编辑全局配置文件
打开 Linux 系统的全局环境变量文件(如 /etc/profile 或 ~/.bashrc,~ 代表当前用户家目录),使用 vi 或 nano 编辑器添加以下内容:
export NODE_HOME=/usr/local/node-v14.17.5-linux-x64 # Node.js 解压后的安装目录
export PATH=$PATH:$NODE_HOME/bin # 将 Node.js 可执行文件加入 PATH
export NODE_PATH=$NODE_HOME/lib/node_modules # 设置 Node.js 模块搜索路径
export NODE_ENV=production # 设置默认环境(development/test/production)
注:
NODE_HOME需替换为实际的 Node.js 安装路径(可通过which node查看)。
使配置生效
保存文件后,运行以下命令使配置立即生效:
source /etc/profile # 或 source ~/.bashrc(针对当前用户)
验证配置
运行以下命令检查环境变量是否生效:
echo $NODE_ENV # 应输出 production
node -v # 检查 Node.js 版本
npm -v # 检查 npm 版本
项目级配置用于管理项目特定的参数(如数据库连接、API 密钥),推荐使用 node-config 模块实现环境隔离(开发/测试/生产)。
安装 node-config 模块
在项目根目录下运行以下命令安装:
npm install --save node-config
创建配置文件目录
在项目根目录下创建 config 文件夹,并添加以下文件:
default.json:基础配置(所有环境通用,如应用名称);development.json:开发环境配置(如本地数据库地址);production.json:生产环境配置(如线上数据库地址)。// default.json
{
"app": {
"name": "my-node-app"
},
"database": {
"host": "localhost",
"port": 3306
}
}
// production.json
{
"database": {
"host": "192.168.1.100",
"port": 3306,
"user": "prod_user",
"password": "prod_password"
}
}
通过环境变量选择配置
运行应用时,通过 NODE_ENV 环境变量指定当前环境:
NODE_ENV=development node app.js # 加载 development.json + default.json
NODE_ENV=production node app.js # 加载 production.json + default.json
代码中获取配置
在 Node.js 代码中,通过 require('config') 获取配置对象:
const config = require('config');
console.log(config.get('app.name')); // 输出应用名称
console.log(config.get('database.host')); // 输出数据库地址(根据环境切换)
对于内存敏感的应用(如大型 API 服务),可通过以下方式限制 Node.js 进程的内存使用:
使用 --max-old-space-size 标志
直接在启动命令中添加内存限制(单位:MB):
node --max-old-space-size=4096 app.js # 限制为 4GB
通过 NODE_OPTIONS 环境变量
在启动脚本或系统环境变量中设置:
export NODE_OPTIONS="--max-old-space-size=4096"
node app.js
使用 PM2 进程管理器
若使用 PM2 管理应用,可在 ecosystem.config.js 中配置:
module.exports = {
apps: [{
name: 'my-app',
script: 'app.js',
max_memory_restart: '4G' // 内存超过 4GB 时自动重启
}]
};
启动命令:pm2 start ecosystem.config.js。
process.env.DB_PASSWORD),或使用 dotenv 模块加载 .env 文件。default.json 和项目级配置示例(如 development.json.example)可纳入 Git 版本控制,但实际环境配置(如 production.json)应添加到 .gitignore,避免敏感信息泄露。node-config 的配置优先级为:命令行参数 > 环境变量 > 当前环境配置文件 > 默认配置文件,可根据需求调整。通过以上方法,可灵活自定义 Linux 下 Node.js 的配置文件,满足不同环境的需求。