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

NextJs Pages路由中getServerSideProps获取Cookie遇TS2722错误

解决Next.js Pages路由getServerSideProps中Cookie获取的TS错误

问题原因

你遇到的TS错误TS2722: Cannot invoke an object which is possibly 'undefined',核心原因是Pages路由里的req.cookies并没有get方法:

  • 从类型定义能看到,NextApiRequestCookies是Partial<{[key: string]: string}>,本质是一个可选的键值对对象,不存在get这个方法。
  • 你可能混淆了Pages Router和App Router的Cookie用法——get方法是App Router(app/目录)中RequestCookies类型才有的API,Pages Router并不支持。

正确解决方案

1. 直接通过属性访问(已验证可行)

直接用键名访问即可,注意因为是Partial类型,Cookie可能不存在,建议添加兜底处理:

export const getServerSideProps: GetServerSideProps = async (context) => {
  const { req } = context;
  // 可选链+默认值,避免undefined问题
  const cookieA = req.cookies.A ?? '默认值';
  // 或者先判断存在性再处理
  if (req.cookies.A) {
    // 处理Cookie存在的逻辑
  }
  return { props: {} };
};

2. 封装自定义get方法(可选)

如果习惯用get的调用方式,可以自己封装一个工具函数:

import type { NextApiRequestCookies } from 'next/dist/server/api-utils';

const getCookie = (cookies: NextApiRequestCookies, key: string): string | undefined => {
  return cookies[key];
};

export const getServerSideProps: GetServerSideProps = async (context) => {
  const { req } = context;
  const cookieA = getCookie(req.cookies, 'A');
  return { props: {} };
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:12:05