不同设备出现JsonWebToken过期/格式错误,致MongoDB/React项目无限循环
MongoDB/React项目本地无限刷新循环问题
删除用户模型/控制器中必填的"name"字段后,我的MongoDB/React项目本地启动后立刻陷入无限刷新循环,但Heroku线上版本仍能正常运行,这个问题已经卡了几周。
已尝试的解决方法
- 重置到最后一个可正常运行的提交版本
- 在未修改代码的其他设备上测试
- 删除并重新安装前后端目录下的
node_modules和package-lock.json文件 - 创建全新数据库并更新
MONGO_URI环境变量
错误日志
PC端错误
JsonWebToken: JWT Malformed. at module.exports [as verify] (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/jsonwebtoken/verify.js:70:17) [0] at /home/erickbravo/ebravo/Practice/parts-house3/backend/middleware/authMiddleware.js:12:33 [0] at asyncUtilWrap (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express-async-handler/index.js:3:20) [0] at Layer.handle [as handle_request] (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/layer.js:95:5) [0] at next (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/route.js:144:13) [0] at Route.dispatch (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/route.js:114:3) [0] at Layer.handle [as handle_request] (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/layer.js:95:5) [0] at /home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/index.js:284:15 [0] at Function.process_params (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/index.js:346:12) [0] at next (/home/erickbravo/ebravo/Practice/parts-house3/node_modules/express/lib/router/index.js:280:10) ^C[0] npm run server exited with code SIGINT
Mac端错误
JsonWebToken: JWT Expired
相关代码文件
authMiddleware.js
const jwt = require("jsonwebtoken"); const asyncHandler = require("express-async-handler"); const User = require("../model/userModel"); const protect = asyncHandler(async(req, res, next) => { let token; if(req.headers.authorization && req.headers.authorization.startsWith("Bearer")) { try { token = req.headers.authorization.split(" ")[1] const decoded = jwt.verify(token, process.env.JWT_SECRET) req.user = await User.findById(decoded.id).select("-password") next() } catch (error) { console.log(error); res.status(401) throw new Error("Not authorized"); } } if (!token) { res.status(401) throw new Error("Not authorized, no token") } }); module.exports = { protect };
User Model
const mongoose = require("mongoose"); const userSchema = mongoose.Schema({ email: { type: String, required: [true, "Please add an email"], unique: true }, password: { type: String, required: [true, "Please add a password"] } }, { timestamps: true }) module.exports = mongoose.model("User", userSchema)
补充:Redux开发者工具错误信息
我已经删除了用户模型和认证相关的所有"name"内容,但仍出现以下错误:
auth:{ user: { message(pin):"name is not defined" stack(pin):"ReferenceError: name is not defined at /home/erickbravo/ebravo/Practice/parts- house3/backend/controllers/userController.js:28:5" } }
内容的提问来源于stack exchange,提问作者Erick Bravo
相关产品推荐
相关产品推荐

