node.js使用`config-lite`配置环境变量

Posted 郝艳峰Vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js使用`config-lite`配置环境变量相关的知识,希望对你有一定的参考价值。

前言


本篇博文背景:config-lite版本=》3.0.0,,node.js版本=》14.17.0,,cross-env版本=》7.0.3
最近在使用node.js开发服务端项目,把自己配置环境变量的过程记录下来,方便学习。

配置环境变量需要cross-envconfig-lite配合使用

第一步:安装config-lite

config-lite传送门config-lite官网

npm install config-lite --save

第二步:项目根目录下创建config文件夹,里边新建default.js,test.js,uat.js,product.js

基本内容如下,具体的可参考项目的配置而定,这里以不同环境的端口变量不同为例
default.js内容

// config-lite模块配置文件
// 这里我用的是mongodb连接数据库
module.exports = 
    host: '0.0.0.0',
    port: 3838,
    dataBaseUrl: 'mongodb://localhost:27017/admin',

test.js内容

module.exports = 
    port:3939,

第三步:再启动页或者你需要的页面引入配置模块

index.js

var express = require('express');
// 必须安装babel,babel-preset-env---node才能支持es6的导入模块import
//连接mongodb数据库
import db from './mongodb/index.js'
// 由于项目中使用了hotnode导致chalk失效,所以建议使用nodemon
import chalk from 'chalk'; //打印日志多彩化
import path from 'path'; //node中处理文件路径的模块
import cookieParser  from 'cookie-parser';     //在浏览器中设置cookie 给响应头(Response headers)设置cookie
import routerFace from './routes/index.js';
//配置模块   config-lite必须如此引入否则无效
var config = require('config-lite')(
    filename: 'default.js',
    config_basedir: __dirname,
    config_dir: 'config'
);
var app = express();
/**
 * 添加跨域请求头,解决跨域办法的一种,后台添加请求头
 */
app.all('*', function (req, res, next) 
    if (req.header("Origin")) 
        res.setHeader("Access-Control-Allow-Origin", req.header("Origin"));
     else 
        res.setHeader("Access-Control-Allow-Origin", "*");
    
    res.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
    res.setHeader("Access-Control-Allow-Credentials", "true");
    res.setHeader("Access-Control-Allow-Methods", "OPTION,POST,GET");
    next();
);
// 用于接收post参数  使接口认识req.body  
// 解析application/x-www-form-urlencoded
app.use(express.json());
app.use(express.urlencoded(
	extended: false
));
//这里有一个区别就是看是否使用签名
app.use(cookieParser());
//设置静态资源路径和文件 
app.use(express.static(path.join(__dirname, 'www'))); 
/* GET home page. */
app.get('/', function (req, res, next) 
    res.send('欢迎访问小郝node服务接口')
);
// 引入所有的接口(路由)文件
routerFace(app);
// 处理接口服务中的404
app.use((req, res, next) => 
	res.sendStatus(404);   //发送状态码使用sendStatus
)
// node监听启动服务端口
app.listen(config.port, config.host, function () 
    console.log(chalk.green('Server start on ' + config.host + ':' + config.port));
);

第四步:安装cross-env

npm install cross-env --save--dev

第五步:package.json配置启动命令

这里要特别说明,如果程序以npm run testStart启动,则config-lite会依次降级查找 config/test.js、config/test.json、config/test.node、config/test.yml、config/test.yaml 并合并 default 配置;

  "scripts": 
    "start": "hotnode enter.js",
    "testStart": "cross-env NODE_ENV=test hotnode enter.js",
    "uatStart": "cross-env NODE_ENV=uat hotnode enter.js",
    "server": "cross-env NODE_ENV=uat pm2 start enter.js --name 'haoyanfeng'",
    "stop": "pm2 stop enter.js --name 'haoyanfeng'",
    "delete": "pm2 delete enter.js --name 'haoyanfeng'",
    "list": "pm2 list",
    "apidoc": "apidoc -i routes/ -o doc/",
    "test": "echo \\"Error: no test specified\\" && exit 1"
  ,

第六步:结束语

这时候就可以完美使用命令区分不同环境了,还有一些不足的地方,后续学习到会更新。

以上是关于node.js使用`config-lite`配置环境变量的主要内容,如果未能解决你的问题,请参考以下文章

node.js使用`config-lite`配置环境变量

配置文件中间件:config-lite

Node.js知识点整理之----基础知识----事件处理机制及事件环机制

[转]express常用中间件

浅析node.js

node.js介绍与安装