core.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. 'use strict';
  2. global.Core = {};
  3. //Global Path
  4. global.Core.Path = {
  5. System : ROOTPATH + '/system',
  6. CoreLib : ROOTPATH + '/system/lib/core',
  7. ExtraLib : ROOTPATH + '/system/lib/extra',
  8. Helper : ROOTPATH + '/system/lib/helper',
  9. Work : ROOTPATH + '/app',
  10. Module : ROOTPATH + '/app/modules',
  11. Handler : ROOTPATH + '/app/handlers',
  12. View : ROOTPATH + '/app/view',
  13. Temp : ROOTPATH + '/temp',
  14. Session : ROOTPATH + '/temp/session',
  15. Log : ROOTPATH + '/log',
  16. Asset : ROOTPATH + '/' + Config.asset_path,
  17. Upload : ROOTPATH + '/' + Config.upload_path
  18. };
  19. //Global Extension Require
  20. global.Commander = require('commander');
  21. global.URL = require('url');
  22. global.FILE = require('fs-extra');
  23. global.EJS = require('ejs');
  24. global.ASYNC = require('async');
  25. global.Base64 = require('js-base64');
  26. global.MD5 = require('md5');
  27. global.DateFormat = require('date-format');
  28. global.Formidable = require('formidable');
  29. global.MIME = require('mime-types');
  30. global.Path = require('path');
  31. global.Request = require('request');
  32. global.Tracer = require('tracer').dailyfile({root:Core.Path.Log,format : "{{timestamp}} <{{title}}> {{file}}:{{line}} {{message}}", dateformat : "HH:MM:ss.L"});
  33. //System Library load
  34. let CoreLibFiles = FILE.readdirSync(Core.Path.CoreLib);
  35. CoreLibFiles.forEach(function(filename){
  36. let nameWithOutMimeType = (filename.split('.')[0]).toUpperCase();
  37. try {
  38. global[nameWithOutMimeType] = require(Core.Path.CoreLib + '/' + filename);
  39. if(typeof global[nameWithOutMimeType] == 'object' && global[nameWithOutMimeType]['__construct']) global[nameWithOutMimeType]['__construct']();
  40. }catch(e){
  41. console.log('[Core] Core library file ['+filename+'] load error!');
  42. Tracer.error('[Core] Core library file ['+filename+'] load error!');
  43. }
  44. });
  45. //System Library load end
  46. //Core Setting,just change it if necessary!
  47. global.Core.Setting = {
  48. //Mysql connect pool setting
  49. mysql_pool:{
  50. name: 'NMVCPOOL',
  51. maxconn: 5
  52. }
  53. };
  54. //If Mysql on,load Mysql Extension
  55. if(Config && Config.mysql_on && Config.mysql_cfg){
  56. let mysqlConfig = {
  57. pool:Core.Setting.mysql_pool,
  58. db:Config.mysql_cfg
  59. };
  60. let MysqlPool = require(Core.Path.ExtraLib + '/mysql-pool.js').instance(mysqlConfig);
  61. // global.MysqlPool = require(Core.Path.ExtraLib + '/mysql-pool.js').instance(mysqlConfig);
  62. // global.MysqlDB = require(Core.Path.Helper + '/mysqldb.js');
  63. let testMysqlCon = MysqlPool.getConnection(Core.Setting.mysql_pool.name);
  64. testMysqlCon.query('SELECT VERSION() as version',function(err,result,fields){
  65. MysqlPool.freeConnection(Core.Setting.mysql_pool.name,testMysqlCon);
  66. if(err){
  67. LOGGER.error('Mysql Connect error,please recheck your config');
  68. LOGGER.error(err);
  69. }else{
  70. LOGGER.info('Mysql Connect success');
  71. LOGGER.info('Mysql Version: ' + result[0]['version'] + ' | User: ' + Config.mysql_cfg.user + ' | Database: ' + Config.mysql_cfg.database);
  72. global.MysqlPool = MysqlPool;
  73. global.MysqlDB = require(Core.Path.Helper + '/mysqldb.js');
  74. }
  75. });
  76. }
  77. //If Mongodb on,load Mongodb Extension
  78. if(Config && Config.mongodb_on && Config.mongodb_cfg && Config.mongodb_cfg.database){
  79. let verify = Config.mongodb_cfg.user?Config.mongodb_cfg.user+':'+Config.mongodb_cfg.password+'@':'';
  80. let mongoConnect = 'mongodb://' + verify + Config.mongodb_cfg.host+':'+Config.mongodb_cfg.port+'/'+Config.mongodb_cfg.database;
  81. require('mongodb').MongoClient.connect(mongoConnect,function(err,db){
  82. if(err) {
  83. LOGGER.error('MongoDB connect error!',true);
  84. LOGGER.error('Server start failed. Log has been saved!');
  85. // Logger.out(err);
  86. return;
  87. }
  88. LOGGER.info('Mongodb Connect success');
  89. global.MongoDB = {db:db};
  90. global.MG = function(collection){
  91. if(!collection) return null;
  92. return MongoDB.db.collection(Config.mongodb_cfg.prefix+collection);
  93. };
  94. });
  95. }
  96. //Check File Paths
  97. for(let path in global.Core.Path){
  98. try{
  99. FILE.statSync(global.Core.Path[path]);
  100. }catch(e){
  101. FILE.mkdirsSync(global.Core.Path[path]);
  102. }
  103. }