const path = require('path') const express = require('express') const { uploadDir } = require('./lib/upload') const { fail } = require('./lib/http') const app = express() const publicDir = path.join(__dirname, 'public') app.disable('x-powered-by') app.use(express.json({ limit: '1mb' })) app.use('/static/uploads', express.static(uploadDir, { maxAge: '7d' })) app.use('/static', express.static(publicDir)) app.use('/api/admin', require('./routes/admin')) app.use('/api', require('./routes/public')) app.get('/admin', (req, res) => res.sendFile(path.join(publicDir, 'admin.html'))) app.get('/', (req, res) => res.redirect('/admin')) app.use('/api', (req, res) => fail(res, 404, '接口不存在')) app.use((error, req, res, next) => { if (res.headersSent) return next(error) if (error.type === 'entity.parse.failed') return fail(res, 400, '请求格式错误') if (error.type === 'entity.too.large') return fail(res, 413, '请求内容过大') const status = error.status && error.status < 500 ? error.status : 500 if (status === 500) console.error(error) fail(res, status, status === 500 ? '服务器开小差了' : error.message) }) module.exports = app