配置环境变量区分开发环境和生产环境

本文详细介绍了如何在项目根目录下设置config文件夹及config.js文件来管理环境变量,包括开发和生产环境的切换,并展示了如何在init.js中全局导入这些环境变量。此外,文章还深入探讨了异常处理策略,特别是在不同环境下如何妥善处理HTTP异常,确保应用程序的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 在根目录下创建config文件夹
  2. 在config文件夹中创建config.js文件
module.exports = {
  // dev表示开发环境 prod表示生产环境
  environment: 'dev'
}
  1. 在init.js中全局导入环境变量
const requireDirectory = require('require-directory')
const Router = require('koa-router')

class InitManger {
  static InitCore (app){
    InitManger.app = app
    InitManger.InitLoadRouters()
    InitManger.InitLoadConfig()
  }
  static InitLoadRouters () {
    // 参数:第一个参数固定参数module,第二个参数要加载的模块的文件路径,第三个参数:每次加载一个参数执行的函数
    // 在node.js中process.cwd()方法可以获取项目的根路径
    const Url = `${process.cwd()}/app/api`
    const modules = requireDirectory(module, Url, {visit:whenModuleLoad})

    function whenModuleLoad (obj) {
      if(obj instanceof Router){
        InitManger.app.use(obj.routes())
      }
    }
  }
  static InitLoadConfig (path = '') {
    const configPath = path || process.cwd() + '/config/config.js'
    const config = require(configPath)
    global.config = config
  }
}
module.exports = InitManger
  1. 在异常处理文件exception.js中使用
const {HttpException} = require('../core/http-exception')
const catchError = async (ctx, next)=>{
  try {
    await next()
  } catch (error) {
    if( global.config.environment === 'dev' ) {
      throw error
    }
    if(error instanceof HttpException){
      ctx.body = {
        msg: error.msg,
        error_code: error.errorCode,
        requestUrl: `${ctx.method} ${ctx.path}`
      }
      ctx.status = error.code
    } else {
      // 未知异常处理
      ctx.body = {
        msg: 'we made a mistake',
        error_code: 999,
        requestUrl: `${ctx.method} ${ctx.path}`
      }
      ctx.status = 5000
    }
  }
}

module.exports = catchError
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值