nodejs 如何自动化配置环境参数
Posted 瓶子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs 如何自动化配置环境参数相关的知识,希望对你有一定的参考价值。
应用场景:
最近用 node 重构了网站的项目,部署到测试环境的时候测试一切正常。
直到有一天,运维把代码上线到内测环境的时候......
突然发现:内测环境和测试环境竟然是同一台服务器,只不过是把代码放在了两个不台的位置而已~
这样的话,在同一台服务器部署两个一样的 node 应用,端口必然冲突,就会导致 node 启动报错。
那怎么办呢?有没有什么办法可以让测试环境和内测环境用两个不同的端口?
冥思苦想......
有了,可以增加配置文件来解决这个问题。
一、建立配置文件目录
首先,各个环境的配置信息是不一样的,我们在 nodejs 根目录新建一个 config 目录,创建保存各个环境配置信息的文件:
(1). 自动载入相应环境配置信息的文件:index.js
(2). 测试环境:test.js
(3). 内测环境:beta.js
目录结构如图:
二、各个配置文件写入各自配置信息
(1). index.js
var path = require(\'path\'), env = process.env.NODE_ENV.toLowerCase(), // 通过 NODE_ENV 来设置环境变量 file = path.resolve(__dirname, env); // 载入配置文件
try { var config = module.exports = require(file); console.log(\'Load config: [%s] %s\', env, file); } catch (err) { console.error(\'Cannot load config: [%s] %s\', env, file); throw err; }
(2). test.js
module.exports = { port: 1337 }
(3). beta.js
module.exports = { port: 1338 }
三、设置 NODE_DEV
(1). 测试环境项目下运行 export NODE_DEV=test
(2). 内测环境项目下运行 export NODE_DEV=beta
(注:如果是 windows 系统,请把 export 改成 set)
四、应用入口文件增加配置信息
假设应用入口为 app.js,我们需要在页面里增加相关配置信息
var config = require(\'./config\'), // 配置文件 port = config.port; console.log(\'listen on port\', config.port);
五、启动 node 应用
(1). 测试环境会读取 test.js 里的配置信息,也就是会应用 1337 端口;
(2). 内测环境会读取 beta.js 里的配置信息,也就是会应用 1338 端口;
关于 process.env.NODE_ENV, 可以参考这篇文章:
以上是关于nodejs 如何自动化配置环境参数的主要内容,如果未能解决你的问题,请参考以下文章