-
Notifications
You must be signed in to change notification settings - Fork 98
/
app.js
130 lines (111 loc) · 3.27 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
"use strict";
const fs = require('fs');
const express = require('express');
const compression = require('compression');
const path = require('path');
const favicon = require('serve-favicon');
const morgan = require('morgan');
const FileStreamRotator = require('file-stream-rotator');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const CONFIG = require('./config');
const routes = require('./routes/index');
const app = express();
// webpack
if (process.argv[2] == '-fe') {
var webpackConfig = require('./build/webpack.dev.conf');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var compiler = webpack(webpackConfig);
var devMiddleware = webpackDevMiddleware(compiler, {
publicPath: webpackConfig.output.publicPath,
stats: {
colors: true,
chunks: true,
progress: true
}
});
var hotMiddleware = require('webpack-hot-middleware')(compiler);
app.use(devMiddleware);
app.use(hotMiddleware);
}
// 爬虫任务
const Job = require('./spider/util/task');
const SpiderMan = require('./spider/spider');
if (CONFIG.spider.fire) {
SpiderMan.fire(CONFIG.spider.start, CONFIG.spider.end);
}
if (CONFIG.spider.openTask) {
SpiderMan.latest();
Job.fire();
}
// 生成统计数据
// const statistic = require('./statistic')
// 参数为需要统计的月份数组
// statistic.start(['201609', '201608'])
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(compression());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
/// catch 404 and forwarding to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
// next(err);
res.render('error', {
message: err.message,
error: err
});
});
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
// ============== log4js init ==============
if (CONFIG.log.isOpenningNode) {
var log4js = require('log4js');
log4js.loadAppender('file');
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: './log/cheese.log', category: 'cheese' }
]
});
}
// ============== log4js init ==============
// ============== HTTP log ==============
if (CONFIG.log.isOpenningHTTP) {
var logDirectory = path.join(__dirname, 'log');
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory)
var accessLogStream = FileStreamRotator.getStream({
date_format: 'YYYYMMDD',
filename: path.join(logDirectory, 'access-%DATE%.log'),
frequency: 'daily',
verbose: false
});
app.use(morgan('combined', { stream: accessLogStream }));
}
// ============== HTTP log ==============
module.exports = app;