Next.js中TypeError: cookies is not iterable错误求助及解决
问题概述
运行代码时触发TypeError: cookies is not iterable错误,错误定位在response.cookies.set()代码行。
错误调用栈
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/rajan/Desktop/programming/Projects/writers/node_modules/next/dist/server/web/utils.js:106:31) at invokeRender (/Users/rajan/Desktop/programming/Projects/writers/node_modules/next/dist/server/lib/router-server.js:275:122) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async handleRequest (/Users/rajan/Desktop/programming/Projects/writers/node_modules/next/dist/server/lib/router-server.js:447:24) at async requestHandler (/Users/rajan/Desktop/programming/Projects/writers/node_modules/next/dist/server/lib/router-server.js:464:13) at async Server. (/Users/rajan/Desktop/programming/Projects/writers/node_modules/next/dist/server/lib/start-server.js:117:13)
相关代码
const tokenData = { id: "123", username: "username", email: "email", }; //Create token const token = await jwt.sign(tokenData, process.env.TOKEN_SECRET!, {/* Create token expiresIn: "1h", }); const response = NextResponse.json({ message: "Login Success", success: true, }); response.cookies.set({ name: 'token', value: token, httpOnly: true }) return response;
解决方案
1. 修复代码语法错误
jwt.sign调用存在注释格式错误,导致配置对象不完整,将注释调整为正确格式,确保配置对象结构正常:
// Create token const token = await jwt.sign(tokenData, process.env.TOKEN_SECRET!, { expiresIn: "1h", });
2. 调整Cookie设置方式
部分旧版本Next.js不支持通过单个对象参数调用cookies.set(),改用分参数传递的方式:
response.cookies.set('token', token, { httpOnly: true });
若使用Next.js 13.4+版本,需确认NextResponse导入路径为import { NextResponse } from 'next/server',此时传对象的方式是支持的,但要保证对象字段完整无遗漏。
内容的提问来源于stack exchange,提问作者Rajan
相关产品推荐
相关产品推荐

