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

使用JWT保护API路由时出现TypeError: Cannot read properties of undefined (reading 'jwt')

解决JWT保护API路由时的TypeError: Cannot read properties of undefined (reading 'jwt')错误

错误核心原因

这个报错的本质是req.cookies未定义——你的Express应用没有配置cookie解析中间件,导致无法读取请求中的cookie数据,自然也就获取不到jwt字段。

分步解决方案

1. 安装cookie解析依赖

在项目根目录执行命令:

npm install cookie-parser

2. 在Express主应用中配置中间件

找到你的Express入口文件(通常是app.js或server.js),在挂载路由之前添加cookie解析中间件:

import express from 'express';
import cookieParser from 'cookie-parser';

const app = express();

// 必须在路由挂载前配置
app.use(cookieParser());

// 之后挂载你的用户路由
import userRoutes from './path/to/your/user/routes.js';
app.use('/api/users', userRoutes);

3. 验证Postman请求的cookie携带

确保请求受保护路由时,Postman已正确携带JWT cookie:

  • 登录接口返回Set-Cookie头后,开启Postman的"Automatically send cookies"设置,让工具自动保存并携带cookie
  • 若手动配置,在请求的"Cookies"标签页添加名为jwt的cookie,值为你的令牌字符串

额外检查项

  • 确认登录接口生成JWT后,正确通过res.cookie()设置cookie:
    // 示例登录接口代码片段
    const token = jwt.sign({ userId: user._id }, process.env.JWT_SECRET, { expiresIn: '30d' });
    res.cookie('jwt', token, {
      httpOnly: true,
      secure: process.env.NODE_ENV !== 'development',
      sameSite: 'strict',
      maxAge: 30 * 24 * 60 * 60 * 1000
    });
    
  • 检查process.env.JWT_SECRET是否已正确配置,确保令牌生成逻辑无错误

内容的提问来源于stack exchange,提问作者Samarth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:19