index.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. 'use strict';
  2. const path = require('path');
  3. const fs = require('fs');
  4. /**
  5. * [loadExtendConfig 加载配置项]
  6. * @author szjcomo
  7. * @date 2021-05-25
  8. * @param {[type]} filename [description]
  9. * @return {[type]} [description]
  10. */
  11. const loadExtendConfig = function(appInfo,filename,appParams = false) {
  12. let filepath = path.join(appInfo.baseDir,'config','async',process.env.APP_CUSTOME || 'universal',filename);
  13. if(fs.existsSync(filepath)) {
  14. if(appParams) return require(filepath)(appInfo);
  15. return require(filepath);
  16. }
  17. if(appParams) return require(`./${filename}`)(appInfo);
  18. return require(`./${filename}`);
  19. }
  20. /**
  21. * [exports 导出对象]
  22. * @type {Object}
  23. */
  24. module.exports = appInfo => {
  25. return {
  26. /**
  27. * [middleware 中间件的使用配置]
  28. * @type {Array}
  29. */
  30. middleware:['notfoundHandler'],
  31. /**
  32. * [bodyParser middleware]
  33. * @type {[type]}
  34. */
  35. bodyParser: loadExtendConfig(appInfo,'body_parser.js'),
  36. /**
  37. * [multipart 文件上传配置项]
  38. * @type {[type]}
  39. */
  40. multipart: loadExtendConfig(appInfo,'multipart.js',true),
  41. /**
  42. * [cluster 项目端口相关配置项]
  43. * @type {[type]}
  44. */
  45. cluster: loadExtendConfig(appInfo,'cluster.js'),
  46. /**
  47. * [sequelize 数据库配置]
  48. * @type {[type]}
  49. */
  50. sequelize: loadExtendConfig(appInfo,'sequelize.js',true),
  51. /**
  52. * [redis redis配置]
  53. * @type {[type]}
  54. */
  55. redis: loadExtendConfig(appInfo,'redis.js',false),
  56. /**
  57. * [session 配置]
  58. * @type {[type]}
  59. */
  60. session: loadExtendConfig(appInfo,'session.js'),
  61. /**
  62. * [security 项目安全机制配置项]
  63. * @type {[type]}
  64. */
  65. security: loadExtendConfig(appInfo,'security.js'),
  66. /**
  67. * [logger 项目日志配置]
  68. * @type {[type]}
  69. */
  70. logger: loadExtendConfig(appInfo,'logger.js',true),
  71. /**
  72. * [assets 静态资源目录]
  73. * @type {Object}
  74. */
  75. static: loadExtendConfig(appInfo,'static.js',true),
  76. /**
  77. * [rundir 正在运行的服务器的目录。您可以在下面找到从app.config转储的“application_config.json”`]
  78. * @type {[type]}
  79. */
  80. rundir: path.join(appInfo.baseDir,'runtime', 'run'),
  81. /**
  82. * [siteFile 中间件的选项]
  83. * 您可以使用此选项映射一些文件,当匹配时它将立即响应
  84. * @type {Object}
  85. */
  86. siteFile:{'/favicon.ico': 'https://eggjs.org/favicon.ico'},
  87. /**
  88. * [cors 跨域处理]
  89. * @type {Object}
  90. */
  91. cors:{
  92. origin: '*',
  93. allowMethods: 'GET,HEAD,PUT,POST,DELETE,OPTIONS'
  94. },
  95. /**
  96. * [jwt json web token 配置]
  97. * @type {Object}
  98. */
  99. jwt:{secret:`szjcomo_${process.env.APP_CUSTOME}`},
  100. /**
  101. * [onerror 出错响应配置]
  102. * @author szjcomo
  103. * @dateTime 2019-12-15
  104. * @param {[type]} err [description]
  105. * @return {[type]} [description]
  106. */
  107. onerror:{
  108. /**
  109. * [all 所有错误请求处理]
  110. * 注意,定义了 config.all 之后,其他错误处理方法不会再生效
  111. * @author szjcomo
  112. * @dateTime 2019-12-15
  113. * @param {[type]} err [description]
  114. * @param {[type]} ctx [description]
  115. * @return {[type]} [description]
  116. */
  117. all(err, ctx) {
  118. ctx.status = 200;
  119. ctx.logger.error(err);
  120. ctx.body = ctx.app.szjcomo.appResult('服务器内部出错,请联系管理员');
  121. }
  122. },
  123. //注意,开启此模式后,应用就默认自己处于反向代理之后,
  124. //会支持通过解析约定的请求头来获取用户真实的 IP,协议和域名。
  125. //如果你的服务未部署在反向代理之后,请不要开启此配置,以防被恶意用户伪造请求 IP 等信息。
  126. proxy:false
  127. };
  128. }