代码拉取完成,页面将自动刷新
const express = require("express");
const app = express();
const port = process.env.PORT || 1800;
const cors = require("cors");
// 导入验证的库
const joi = require("joi");
// 导入解析token的库
const expressjwt = require("express-jwt");
// 导入配置文件
const config = require("./config");
// 把跨域模块注册到app实例上
app.use(cors());
// 托管静态资源
app.use(express.static("public"));
// 配置解析post数据的中间件,这个中间件只能解析application/json格式的数据
app.use(express.json());
// 配置解析post数据的中间件,这个中间件只能解析application/x-www-form-urlencoded格式的表单数据
app.use(express.urlencoded());
// 导入注册、登录路由模块
const userRouter = require("./router/user");
const menuRouter = require("./router/menu");
// 定义全局错误中间件,必须在路由之前定义
app.use((req, res, next) => {
// 在res对象上挂载一个自定义处理错误的函数,status(0:成功,1:失败)
res.myErr = (err, status = 1) => {
res.send({
status,
message: err instanceof Error ? err.message : err,
});
};
next();
});
// 一定要定义在路由之前来解析token
app.use(
expressjwt
.expressjwt({ secret: config.jwtKey, algorithms: ["HS256"] })
.unless({ path: [/^\/api\//] }),
);
// 把路由模块注册到app实例上,/api是注册登录路由模块的前缀,可以跳过身份验证
app.use("/api", userRouter);
app.use("/api", menuRouter);
// 定义中间件、路由、连接数据库……
app.use((err, req, res) => {
// 验证失败导致的错误
if (err instanceof joi.ValidationError) return res.myErr(err);
// 捕获身份认证失败的错误
if (err.name === "UnauthorizedError") return res.myErr("身份认证失败!");
// 未知错误
res.myErr(err);
});
// 监听服务器的启动
app.listen(port, () => {
console.log(port + "端口服务启动成功!! ");
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。