代码拉取完成,页面将自动刷新
const express = require('express')
const app = express()
// 导入 Joi 来定义验证规则
const Joi = require('@hapi/joi')
const jwt = require('express-jwt')
const path = require('path')
const { secretKey } = require('./config/index')
// 注册 cors 解决跨域问题
const cors = require('cors')
app.use(cors())
app.use(express.urlencoded({ extended: false }))
// 托管静态资源文件 绝对路径
app.use('/uploads', express.static(path.join(__dirname, '../uploads')))
// 定义全局中间件 --> 一定要定义在 路由 之前
app.use((req, res, next) => {
// 对函数参数进行解构给默认值的时候,最好在最后一个参数
res.cc = function (err, status = 1) {
res.send({
message: err instanceof Error ? err.message : err,
status
})
}
next()
})
// 定义解析 token 的中间件
app.use(jwt({ secret: secretKey }).unless({ path: [/^\/api\//] }))
// 注册路由中间件
const userRouter = require('./router/user')
app.use('/api', userRouter)
const userInfoRouter = require('./router/userinfo')
app.use('/my', userInfoRouter)
const cateRouter = require('./router/artcate')
app.use('/my/article', cateRouter)
const articleRouter = require('./router/article')
app.use('/my/article', articleRouter)
// 定义错误中间件
app.use((err, req, res, next) => {
console.log(err)
if (err.name === 'UnauthorizedError') {
// return res.cc('身份认证失败') return 就是表示立即终端程序
return res.cc('身份认证失败')
} else if (err instanceof Joi.ValidationError) {
return res.cc(err)
}
res.cc(err)
// 这里可以不用加 next()
})
app.listen(9091, () => {
console.log('express server running at http://localhost:9091')
})
// 测试账号:heima001 123456
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。