123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- 'use strict';
- const path = require('path');
- const fs = require('fs');
- /**
- * [loadExtendConfig 加载配置项]
- * @author szjcomo
- * @date 2021-05-25
- * @param {[type]} filename [description]
- * @return {[type]} [description]
- */
- const loadExtendConfig = function(appInfo,filename,appParams = false) {
- let filepath = path.join(appInfo.baseDir,'config','async',process.env.APP_CUSTOME || 'universal',filename);
- if(fs.existsSync(filepath)) {
- if(appParams) return require(filepath)(appInfo);
- return require(filepath);
- }
- if(appParams) return require(`./${filename}`)(appInfo);
- return require(`./${filename}`);
- }
- /**
- * [exports 导出对象]
- * @type {Object}
- */
- module.exports = appInfo => {
- return {
- /**
- * [middleware 中间件的使用配置]
- * @type {Array}
- */
- middleware:['notfoundHandler'],
- /**
- * [bodyParser middleware]
- * @type {[type]}
- */
- bodyParser: loadExtendConfig(appInfo,'body_parser.js'),
- /**
- * [multipart 文件上传配置项]
- * @type {[type]}
- */
- multipart: loadExtendConfig(appInfo,'multipart.js',true),
- /**
- * [cluster 项目端口相关配置项]
- * @type {[type]}
- */
- cluster: loadExtendConfig(appInfo,'cluster.js'),
- /**
- * [sequelize 数据库配置]
- * @type {[type]}
- */
- sequelize: loadExtendConfig(appInfo,'sequelize.js',true),
- /**
- * [redis redis配置]
- * @type {[type]}
- */
- redis: loadExtendConfig(appInfo,'redis.js',false),
- /**
- * [session 配置]
- * @type {[type]}
- */
- session: loadExtendConfig(appInfo,'session.js'),
- /**
- * [security 项目安全机制配置项]
- * @type {[type]}
- */
- security: loadExtendConfig(appInfo,'security.js'),
- /**
- * [logger 项目日志配置]
- * @type {[type]}
- */
- logger: loadExtendConfig(appInfo,'logger.js',true),
- /**
- * [assets 静态资源目录]
- * @type {Object}
- */
- static: loadExtendConfig(appInfo,'static.js',true),
- /**
- * [rundir 正在运行的服务器的目录。您可以在下面找到从app.config转储的“application_config.json”`]
- * @type {[type]}
- */
- rundir: path.join(appInfo.baseDir,'runtime', 'run'),
- /**
- * [siteFile 中间件的选项]
- * 您可以使用此选项映射一些文件,当匹配时它将立即响应
- * @type {Object}
- */
- siteFile:{'/favicon.ico': 'https://eggjs.org/favicon.ico'},
- /**
- * [cors 跨域处理]
- * @type {Object}
- */
- cors:{
- origin: '*',
- allowMethods: 'GET,HEAD,PUT,POST,DELETE,OPTIONS'
- },
- /**
- * [jwt json web token 配置]
- * @type {Object}
- */
- jwt:{secret:`szjcomo_${process.env.APP_CUSTOME}`},
- /**
- * [onerror 出错响应配置]
- * @author szjcomo
- * @dateTime 2019-12-15
- * @param {[type]} err [description]
- * @return {[type]} [description]
- */
- onerror:{
- /**
- * [all 所有错误请求处理]
- * 注意,定义了 config.all 之后,其他错误处理方法不会再生效
- * @author szjcomo
- * @dateTime 2019-12-15
- * @param {[type]} err [description]
- * @param {[type]} ctx [description]
- * @return {[type]} [description]
- */
- all(err, ctx) {
- ctx.status = 200;
- ctx.logger.error(err);
- ctx.body = ctx.app.szjcomo.appResult('服务器内部出错,请联系管理员');
- }
- },
- //注意,开启此模式后,应用就默认自己处于反向代理之后,
- //会支持通过解析约定的请求头来获取用户真实的 IP,协议和域名。
- //如果你的服务未部署在反向代理之后,请不要开启此配置,以防被恶意用户伪造请求 IP 等信息。
- proxy:false
- };
- }
|