- 在根目录下创建config文件夹
- 在config文件夹中创建config.js文件
module.exports = {
// dev表示开发环境 prod表示生产环境
environment: 'dev'
}
- 在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
- 在异常处理文件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