visop
Version:
A simple CLI for scaffolding visible operation projects.
235 lines (191 loc) • 7.54 kB
JavaScript
;
// console.log('ddddddddd,',process.env.CODE_PATH);
var path = require('path');
var fse = require('fs-extra');
var express = require('express');
var shell = require('shelljs')
// var m = require('./api/diagnosticRecord/service');
// var doc = {
// birthday:'1488811074459',
// createdAt: '567199560000'
// }
// console.log(m.getReportData(doc));
// console.log('111111111111111')
/*实例化express对象*/
var app = express();
//定义全局环境变量
// 在此之前,应该在开发环境的电脑上配置export NODE_ENV=product
global.ENV = app.get("env");
// 初始化测试数据
// if(ENV == 'test'){
// require('./initTest');
// }
global.requireDao = require('./utils/requireDao'); // 全局引用dao的函数
// var ejs = require('ejs');
var setting = require('./config/setting'); // 自己定义的全局变量
setting.CODE_PATH = process.env.CODE_PATH || process.cwd(); // 配置文件所在根目录
// var mysql = require('mysql');
// mysql._format = mysql.format;
// mysql.format = function(){
// console.log('format...............',arguments)
// var results = mysql._format.apply(this, arguments);
// console.log('execute sql:', results);
// return results;
// // return mysql.format;
// }
// global.pool = mysql.createPool(setting.mysql);
// pool.on('enqueue', function (abc) {
// console.log('Waiting for available connection slot', abc);
// });
// pool.on('connection', function (connection) {
// // connection.query('SET SESSION auto_increment_increment=1')
// });
// pool.on('acquire', function (connection) {
// console.log('Connection %d acquired', connection.threadId);
// });
// pool.on('release', function (connection) {
// console.log('Connection %d release', connection.threadId);
// });
// 链接elasticsearch
// https://github.com/elastic/elasticsearch-js
var logDir1 = path.join(__dirname, 'logs','log_date');
// console.log('logDir1:', logDir1);
fse.ensureDirSync(logDir1)
var logDir2 = path.join(__dirname, 'logs','log_file');
// console.log('logDir2:', logDir2);
fse.ensureDirSync(logDir2)
// console.log('file upload url:' + setting.file_url);
var log = require('./utils/log'); // 日志系统
var system = require('./utils/system'); // 系统操作库
// var pagination = require('mongoose-pagination'); //分页-z
// *****************************************************
// 全局变量定义
// 在./config/setting.js中定义
// *****************************************************
// 日志系统初始化
// log.debug("日志系统启动!");
//实例化redis客户端,配置token时需要用到-z
// global.redisClient = require('./utils/redis').redisClient;
// ********************************************************
// Express 设置
// if (global.ENV == 'production') {
// console.log('正式环境模式');
// } else if (ENV == 'test') {
// console.log('测试环境模式');
// } else {
// console.log('开发环境模式');
// }
// 扫描model目录
// console.log('1111111111111111111111111111',path.join(__dirname , 'models') )
// var model_list = require('./models/schema.json');
// log.debug("目录列表 ", model_list);
// for(var i=0;i<model_list.length;i++){
// require('./models/'+ model_list[i]+'.js');
// }
// global.ENV = 'production';
require('./utils/express')(app);
// var env = app.get('env');
//设置静态目录放在public文件中
app.use(express.static(path.join(__dirname, '..', 'front','dist')));
// 覆盖req.param
app.use(function(req, res, next){
req.param = function param(name, defaultValue) {
var params = this.params || {};
var body = this.body || {};
var query = this.query || {};
var args = arguments.length === 1
? 'name'
: 'name, default';
// deprecate('req.param(' + args + '): Use req.params, req.body, or req.query instead');
if (null != params[name] && params.hasOwnProperty(name)) return params[name];
if (null != body[name]) return body[name];
if (null != query[name]) return query[name];
return defaultValue;
};
return next();
})
// ********************************************************
require('./utils/loadRoute')(app);
// var reload = require('reload')
// var reloadServer = reload(app);
// const chokidar = require('chokidar');
// const watcher = chokidar.watch(path.join(setting.CODE_PATH, 'visop'), { ignoreInitial: true, awaitWriteFinish: true });
// watch.watchTree(path.join(setting.CODE_PATH, 'visop'), function (f, curr, prev) {
// // Fire server-side reload event
// console.log('f,',f,'curr, ',curr,'prev,',prev)
// reloadServer.reload();
// });
// watcher.on('all', (event, filename) => {
// console.log('visop files added', filename)
// reloadServer.reload();
// if(filename.endsWith('.json')){
// // allFileNames.value.indexOf(path.basename(filename, '.json'))
// reloadServer.reload();
// }
// })
// const chokidar = require('chokidar');
// const invalidate = require('invalidate-module');
// const watcher = chokidar.watch(path.join(setting.CODE_PATH, 'visop'), { ignoreInitial: true, awaitWriteFinish: true });
// watcher.on('add', (event, filename) => {
// console.log('visop files added', filename)
// if(filename.endsWith('.json')){
// allFileNames.value.indexOf(path.basename(filename, '.json'))
// }
// // invalidate(path.resolve(filename));
// require('./utils/loadRoute')(app);
// // require('./a');
// });
// // 加载API目录
// for (var i = 0; i < route_list.length; i++) {
// var routePath = path.join(global.API_PATH, route_list[i].name, route_list[i].name + ".router");
// var route = require(routePath);
// var apiRoot = ['', 'api', route_list[i].name].join('/');
// app.use(apiRoot ,route);
// log.debug("Load API Root: " , apiRoot , " PATH:", routePath);
// }
// app.use('/api/user', require(__dirname+'\\server\\api\\user\\route'));
// ********************************************************
// 页面模块
// 加载server目录 server目录是公开目录,没有token验证
// var app_list = ['logreg'];
// for(var i=0;i<app_list.length;i++){
// var app_route = require('./server/'+app_list[i]+'/route');
// app.use("/",app_route)
// }
// 仅加载一个演示页面,空白页面
// app.get("/", function(req, res) {
// res.render("index.html", {});
// });
// *********************************************************
// database 数据库设置
// 实例化数据库访问
// global.db = require('./utils/mongodb')(setting.database);
// console.log('加密测试---------------: ', require('./utils/encrypt').createHash('123456'));
var message = require('./utils/returnFactory');
//错误处理-z
app.use(function(err, req, res, next) {
if (err.name === 'UnauthorizedError') {
res.status(401).send('invalid token...');
}
if (err.name === 'ParamValidateError') {
res.status(200).json(message('PARAM_ERROR', null, err));
}
if(err == 'EXECUTE'){
res.status(200).json(message('SUCCESS', null, err,'execute success'));
}
log.error(err);
// res.status(200).json(message('ERROR', null, err));
});
function handleExit(){
// 释放mysql连接池
if(global.pool){
global.pool.end(function(err) {
process.exit(err ? 1 : 0);
});
}
}
var cleanup = require('./utils/cleanup').Cleanup(handleExit)
module.exports = app;
// app.listen(8029,function(err){
// console.log('listen on 8029');
// });