错误:`Cookies` 在请求范围之外被调用

问题描述 投票:0回答:1

我最近将一个 NextJS 项目部署到 stackblitz。但我无法运行此应用程序,因为日志抛出 500 错误作为建议的标题。您可以在此处查看 stackblitz 存储库:项目链接

javascript reactjs typescript next.js
1个回答
0
投票

错误消息“在请求范围之外调用 Cookie”通常表示您正在尝试在 Next.js 请求范围不可用的上下文中访问 Cookie。当您尝试访问不属于服务器端渲染过程的组件或函数中的 cookie 时,通常会发生这种情况。

以下是排查和解决此问题的一些步骤:

  1. 检查您访问 Cookie 的位置:确保您仅在服务器端函数(例如 getServerSideProps、getInitialProps 或 API 路由)中访问 Cookie。例如:

    导出异步函数 getServerSideProps(context) { const { 请求 } = 上下文; const cookies = req.cookies; // 从请求中获取cookie // ... return { props: { /* 你的 props */ } }; }

  2. 确保正确使用库:如果您正在使用 next-cookies 或类似库,请确保它们在正确的上下文(即服务器端)中使用:

    从“next-cookies”导入cookie;

    导出异步函数 getServerSideProps(context) { const allCookies = cookies(上下文); // 正确访问cookie // ... }

  3. 中间件使用:如果您使用任何中间件来处理 cookie,请确保它在您的 Next.js 应用程序中正确应用。

  4. 调试日志:添加调试日志以查看 cookie 访问发生的位置。这可以帮助确定是否在请求范围之外调用它。

  5. 检查 Stackblitz 配置:有时,部署环境可能会引入意外行为。确保 Stackblitz 配置正确以支持 Next.js 应用程序。

  6. 更新软件包:确保所有依赖项都是最新的,因为新版本中可能会有修复或改进。

  7. 客户端 Cookie 访问:如果您尝试访问仅在客户端运行的组件中的 Cookie,请改用 document.cookie:

    if(窗口类型!=='未定义'){ const clientCookies = document.cookie; // 访问客户端的cookie }

如果检查完这些点后您仍然遇到问题,请提供与 cookie 访问相关的代码片段,肯定会有人为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.