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

Express TypeScript中使用cookie-parser获取Cookie的方法

核心错误点

你的代码无法正常读取Cookie是因为注册cookie-parser中间件的写法错误:app.use()需要传入中间件执行后的函数实例,你直接传入了cookieParser本身,没有加括号调用,中间件根本没有生效。另外TypeScript项目下用require导入会丢失类型提示,也可能触发运行时导入异常。

正确配置步骤
  1. 先安装依赖和TS对应的类型声明包
npm i cookie-parser
npm i -D @types/cookie-parser
  1. 正确导入、注册中间件,注意cookieParser必须加括号调用,且注册位置要放在所有路由定义之前:
import express, { Request, Response } from 'express';
import cookieParser from 'cookie-parser';

const app = express();

// 正确注册:必须加()执行,返回中间件处理函数
app.use(cookieParser());

// 写入Cookie的路由示例
app.get('/set', (req: Request, res: Response) => {
  res.cookie('park', 'juhong', {
    httpOnly: true,
    maxAge: 24 * 60 * 60 * 1000 // 有效期1天
  });
  res.send('cookie written');
})

// 读取Cookie的路由
app.get('/', (req: Request, res: Response) => {
  // req.cookies 就是解析完成的键值对对象
  console.log(req.cookies);
  res.send(`cookie value: ${req.cookies.park ?? 'empty'}`);
})

app.listen(3000, () => {
  console.log('service start at 3000');
})
额外排查项
  • 跨域场景下Cookie不生效:前端请求要开启withCredentials: true配置,后端cors配置要设置credentials: true,且origin不能为通配符*
  • 如果写入Cookie时开启了signed: true签名配置,对应值要从req.signedCookies字段读取,不要从req.cookies取
  • 确认中间件注册顺序:app.use(cookieParser())必须写在所有需要读取Cookie的路由前面,否则路由执行时Cookie还未被解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:36:16