NextJS 13 TypeError:响应主体对象不应被干扰或锁定

Jul*_*eri 6 next.js next.js13

我的 NextJS 13 服务器(应用程序路由器)记录了一个TypeError: Response body object should not be disturbed or locked我不知道如何跟踪的错误。当我尝试注册新用户时偶尔会发生这种情况,但并非每次都会发生。

\n
 \xe2\xa8\xaf TypeError: Response body object should not be disturbed or locked\n    at extractBody (node:internal/deps/undici/undici:6433:17)\n    at new Request (node:internal/deps/undici/undici:7314:48)\n    at new NextRequest ([project]/node_modules/next/dist/server/web/spec-extension/request.js:33:14)\n    at NextRequestAdapter.fromNodeNextRequest ([project]/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js:75:16)\n    at NextRequestAdapter.fromBaseNextRequest ([project]/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js:51:35)\n    at doRender ([project]/node_modules/next/dist/server/base-server.js:1215:69)\n    at cacheEntry.responseCache.get.incrementalCache.incrementalCache ([project]/node_modules/next/dist/server/base-server.js:1432:46)\n    at [project]/node_modules/next/dist/server/response-cache/index.js:102:42\n    at ResponseCache.get ([project]/node_modules/next/dist/server/response-cache/index.js:156:11)\n    at DevServer.renderToResponseWithComponentsImpl ([project]/node_modules/next/dist/server/base-server.js:1360:53)\n\n
Run Code Online (Sandbox Code Playgroud)\n

我正在使用@supabase/auth-helpers-nextjswith next-intl,但无法判断它们是否与该问题相关。据我所知,路由处理程序和中间件是我的代码中唯一在注册时处理请求和响应的地方。

\n

路线处理程序:

\n
 \xe2\xa8\xaf TypeError: Response body object should not be disturbed or locked\n    at extractBody (node:internal/deps/undici/undici:6433:17)\n    at new Request (node:internal/deps/undici/undici:7314:48)\n    at new NextRequest ([project]/node_modules/next/dist/server/web/spec-extension/request.js:33:14)\n    at NextRequestAdapter.fromNodeNextRequest ([project]/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js:75:16)\n    at NextRequestAdapter.fromBaseNextRequest ([project]/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js:51:35)\n    at doRender ([project]/node_modules/next/dist/server/base-server.js:1215:69)\n    at cacheEntry.responseCache.get.incrementalCache.incrementalCache ([project]/node_modules/next/dist/server/base-server.js:1432:46)\n    at [project]/node_modules/next/dist/server/response-cache/index.js:102:42\n    at ResponseCache.get ([project]/node_modules/next/dist/server/response-cache/index.js:156:11)\n    at DevServer.renderToResponseWithComponentsImpl ([project]/node_modules/next/dist/server/base-server.js:1360:53)\n\n
Run Code Online (Sandbox Code Playgroud)\n

中间件:

\n
// /app/[locale]/auth/register/route.ts\nimport { createRouteHandlerClient } from \'@supabase/auth-helpers-nextjs\';\nimport { getTranslator } from \'next-intl/server\';\nimport { cookies } from \'next/headers\';\nimport { NextResponse } from \'next/server\';\n\nexport const dynamic = \'force-dynamic\';\n\nexport async function POST(\n  request: Request,\n  { params: { locale } }: { params: { locale: string } }\n) {\n  const t = await getTranslator(locale, \'auth/register\');\n  const requestUrl = new URL(request.url);\n  const formData = await request.formData();\n  const email = String(formData.get(\'email\'));\n  const password = String(formData.get(\'password\'));\n  const account_type = String(formData.get(\'accountType\'));\n  const user_name = String(formData.get(\'userName\'));\n  const supabase = createRouteHandlerClient({ cookies });\n\n  const { error } = await supabase.auth.signUp({\n    email,\n    password,\n    options: {\n      emailRedirectTo: `${requestUrl.origin}/auth/callback`,\n      data: {\n        account_type,\n        user_name,\n      },\n    },\n  });\n\n  if (error) {\n    return NextResponse.redirect(\n      `${requestUrl.origin}/register?error=${error}`,\n      {\n        status: 301,\n      }\n    );\n  }\n\n  return NextResponse.redirect(\n    `${requestUrl.origin}/register?message=${t(\'checkEmail\')}`,\n    {\n      status: 301,\n    }\n  );\n}\n
Run Code Online (Sandbox Code Playgroud)\n