NextJs集成NextAuth遭遇cookies不可迭代错误求助
错误日志
- event compiled client and server successfully in 307 ms (168 modules) - event compiled client and server successfully (447 modules) - warn Fast Refresh had to perform a full reload. Read more: https://nextjs.org/docs/messages/fast-refresh-reload TypeError: cookies is not iterable at get [headers map sorted] (node:internal/deps/undici/undici:1844:34) at node:internal/deps/undici/undici:1865:43 at Headers Iterator.next (node:internal/deps/undici/undici:1108:26) at toNodeOutgoingHttpHeaders (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/web/utils.js:106:31) at invokeRender (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:250:122) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async handleRequest (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:422:24) at async requestHandler (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:439:13) TypeError: cookies is not iterable at get [headers map sorted] (node:internal/deps/undici/undici:1844:34) at node:internal/deps/undici/undici:1865:43 at Headers Iterator.next (node:internal/deps/undici/undici:1108:26) at toNodeOutgoingHttpHeaders (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/web/utils.js:106:31) at invokeRender (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:250:122) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async handleRequest (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:422:24) at async requestHandler (/Users/123/Talentstark/talentstark/node_modules/next/dist/server/lib/router-server.js:439:13)
项目依赖版本
"dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@headlessui/react": "^1.7.16", "@heroicons/react": "^2.0.18", "@mui/material": "^5.14.3", "@prisma/client": "^5.1.1", "@types/node": "20.4.8", "@types/react": "18.2.18", "@types/react-dom": "18.2.7", "autoprefixer": "10.4.14", "eslint": "8.46.0", "eslint-config-next": "13.4.13", "next": "13.4.13", "next-auth": "^4.22.1", "postcss": "8.4.27", "react": "18.2.0", "react-dom": "18.2.0", "tailwindcss": "3.3.3", "typescript": "5.1.6" }, "devDependencies": { "prisma": "^5.1.1" }
问题场景
认证路由为/api/auth/[...nextauth]/route.ts,采用标准GitHub认证配置。
排查与解决步骤
- 检查NextAuth路由导出方式:App Router下的NextAuth路由必须使用以下导出格式,不能用旧版的
export default NextAuth(...):import NextAuth from "next-auth" import GitHubProvider from "next-auth/providers/github" export const { handlers, auth, signIn, signOut } = NextAuth({ providers: [ GitHubProvider({ clientId: process.env.GITHUB_ID!, clientSecret: process.env.GITHUB_SECRET!, }), ], }) - 验证Session配置:若使用
jwt模式,确保session选项未错误修改cookie结构,避免返回非可迭代对象。 - 降级Node.js版本:该错误与Node内置的undici库兼容性有关,Node 20.x部分版本存在问题,可切换到Node 18.x LTS版本测试。
- 清除项目缓存:删除
.next、node_modules和package-lock.json,重新执行npm install后启动项目,排除缓存异常。 - 排查自定义Cookie操作:检查项目中是否有middleware或其他代码修改了请求/响应的cookies对象,确保未将其改为非可迭代类型。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

