应用场景:

最近用 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, 可以参考这篇文章:

process.env.NODE_ENV

最新文章

  1. SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
  2. 成为一个高效的web开发人员,只需要三步
  3. LUA table学习笔记
  4. layer弹出层全屏及关闭
  5. 快捷键&小技巧&备忘录
  6. [转载] Linux下查看内存使用情况方法总结
  7. PHP Array 函数
  8. 转 用 AXIOM 促进 XML 处理
  9. Spring与Struts整合
  10. Java面试题-并发框架
  11. 13、SQL Server 自定义函数
  12. utf8字节
  13. Web Api集成Swagger
  14. XML文件生成
  15. JEasyPoi 2.1.4 (Jeecg订制) 版本发布,Excel 和 Word 简易工具类
  16. [51nod1684]子集价值
  17. 关于浏览器cookie的小知识
  18. P4609 [FJOI2016]建筑师
  19. Alpha Level (Significance Level)
  20. Redis数据持久化

热门文章

  1. hive数据倾斜的解决办法
  2. hadoop之hive建表语句备份
  3. Day1_Python学习
  4. sql关联查询—将一个表的查询结果作为新表进行查询操作
  5. Swift的访问控制讲解
  6. css之vw布局
  7. 深入V8引擎-AST(4)
  8. rbash限制用户执行的命令
  9. SQL 对float类型列进行排序引发的异常
  10. 生产力工具:shell 与 Bash 脚本