mirror of
https://gitee.com/bookshelfplus/bookshelfplus
synced 2025-09-02 23:23:28 +08:00
114 lines
3.0 KiB
JavaScript
114 lines
3.0 KiB
JavaScript
'use strict';
|
|
var express = require('express');
|
|
var path = require('path');
|
|
var favicon = require('serve-favicon');
|
|
var logger = require('morgan');
|
|
var cookieParser = require('cookie-parser');
|
|
var bodyParser = require('body-parser');
|
|
let dotenv = require('dotenv');
|
|
|
|
// 读取配置文件
|
|
dotenv.config('./env');
|
|
// console.log(process.env);
|
|
// 引入路由文件
|
|
var indexRoute = require('./routes/index');
|
|
var fontminRoute = require('./routes/fontmin');
|
|
const { copyFileSync } = require('fs');
|
|
|
|
// 创建应用
|
|
var app = express();
|
|
|
|
// gzip
|
|
if (process.env.gzip == "true") {
|
|
const compression = require('compression');
|
|
app.use(compression());
|
|
console.log("[GZIP] gzip enabled");
|
|
} else {
|
|
console.log("[GZIP] gzip disabled");
|
|
}
|
|
|
|
// 设置视图引擎 view engine setup
|
|
app.set('views', path.join(__dirname, 'views'));
|
|
app.set('view engine', 'ejs'); // pug
|
|
app.engine('.html', require('ejs').__express);
|
|
app.set('view engine', 'html');
|
|
|
|
app.use(favicon(__dirname + '/public/favicon.ico'));
|
|
app.use(logger('dev'));
|
|
app.use(bodyParser.json());
|
|
app.use(bodyParser.urlencoded({ extended: false }));
|
|
app.use(cookieParser());
|
|
app.use(express.static(path.join(__dirname, 'public')));
|
|
|
|
// 路由
|
|
app.use('/', indexRoute);
|
|
app.use('/fontmin', fontminRoute);
|
|
|
|
// 捕获404并转发到错误处理程序 catch 404 and forward to error handler
|
|
app.use(function (req, res, next) {
|
|
var err = new Error('Not Found');
|
|
err.status = 404;
|
|
next(err);
|
|
});
|
|
|
|
// 错误处理 error handlers
|
|
|
|
// development error handler
|
|
// will print stacktrace
|
|
if (app.get('env') === 'development') {
|
|
console.log("[NODE_ENV] development");
|
|
app.use(function (err, req, res, next) {
|
|
res.status(err.status || 500);
|
|
res.render('error', {
|
|
message: err.message,
|
|
error: err,
|
|
title: '出错啦'
|
|
});
|
|
});
|
|
} else {
|
|
// production
|
|
console.log("[NODE_ENV] production");
|
|
}
|
|
|
|
// 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: {}
|
|
});
|
|
});
|
|
|
|
app.set('port', process.env.PORT || 3000);
|
|
|
|
var server = app.listen(app.get('port'), function () {
|
|
console.log('Express server listening on port ' + server.address().port);
|
|
|
|
// 引入站点配置文件
|
|
global.site = require("./settings.json");
|
|
|
|
// 取得API路径
|
|
if (!global.site) {
|
|
console.log('settings.json is not defined');
|
|
process.exit(1);
|
|
}
|
|
// console.log("[global.site]");
|
|
// console.log(JSON.stringify(global.site));
|
|
console.log(" ***************************** 启动成功 ***************************** ");
|
|
});
|
|
|
|
|
|
// 注册SIGINT信号事件
|
|
process.on('SIGINT', function () {
|
|
console.clear();
|
|
console.log(" ***************************** 正在清理 ***************************** ");
|
|
|
|
require('./cleanup.js');
|
|
|
|
console.log(" ************************* 清理完毕,已退出 ************************* ");
|
|
console.log('Exit now!');
|
|
|
|
process.exit();
|
|
// return true;
|
|
}); |