加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.js 1.92 KB
一键复制 编辑 原始数据 按行查看 历史
WXJ 提交于 2024-08-19 18:08 . 删除 注册登录一起的方法
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 + "端口服务启动成功!! ");
});
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化