Initial commit of the WeChat mini program, Express backend, and admin console. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
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
|