'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 }; }