You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同设备出现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:07:46