两种设置方式

框架有两种方式指定运行环境:生产环境开发环境单元测试

  1. 通过 config/env 文件指定

    // config/env
    prod
    
  2. 【推荐】通过 EGG_SERVER_ENV 环境变量指定运行环境更加方便,比如在生产环境启动应用:

    "scripts": {
       "dev": "egg-bin dev",
       "prod": "EGG_SERVER_ENV=prod egg-bin dev"
     },
    

获取运行环境

  1. 框架提供了变量 app.config.env 来表示应用当前的运行环境;

  2. 若没有指定 config/env 文件,同时也没有指定 EGG_SERVER_ENV 环境变量, app.config.env 的值由 NODE_ENV 确定

  3. 确定的方式如下:

    NODE_ENV EGG_SERVER_ENV 说明
    其他 local 本地开发环境
    test unittest 单元测试
    production prod 生产环境

针对环境的配置

  1. egg 支持下面这些配置

    config
      |- config.default.js
      |- config.prod.js
      |- config.unittest.js
      |- config.local.js
    
  2. config.default.js 为默认的配置文件,所有环境都会加载这个配置文件,一般也会作为开发环境的默认配置文件;

  3. 当指定 env 时会同时加载对应的配置文件,并覆盖默认配置文件的同名配置,如 prod 环境会加载 config.prod.jsconfig.default.js 文件,config.prod.js 会覆盖 config.default.js 的同名配置;

    // config/config.default.js
    exports.cluster = {
      listen: {
        port: 7001,
      },
    };
    
    // config/config.prod.js
    exports.cluster = {
      listen: {
        port: 5000,
      },
    };
    
  4. 有的时候,可能需要自定义环境,比如开发阶段,不同的开发者可能使用的开发环境有差异,尽管这很少见;如果是这种情况,可以设置 EGG_SERVER_ENV 为一个自定义的值,然后配置相应值的 config 文件即可

    // package.json
    {
      "scripts":{
        "dev": "EGG_SERVER_ENV=ricepudding egg-bin dev"
      }
    }
    
    // config/config.ricepudding.js
    exports.cluster = {
      listen: {
        port: 6000,
      },
    };
    
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 两种设置方式
  2. 2. 获取运行环境
  3. 3. 针对环境的配置