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-env
和config-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`配置环境变量的主要内容,如果未能解决你的问题,请参考以下文章