zoukankan      html  css  js  c++  java
  • 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, 可以参考这篇文章:

    process.env.NODE_ENV

  • 相关阅读:
    算法导论读书笔记(未完成)
    工作心理学(未完成)
    面试疑难点解析
    aop难点解析。
    Mybatis框架解析之Builder解析
    HashMap原理总结
    编程基础的重要性(程序员之路)
    Java HashMap详解
    Java源码分析系列之HttpServletRequest源码分析
    JFinal源码 分析之 Core包分析
  • 原文地址:https://www.cnblogs.com/lpbottle/p/8139799.html
Copyright © 2011-2022 走看看