Files
zhuomi-hui/server/app.js
T

32 lines
1.1 KiB
JavaScript
Raw Normal View History

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