NextJs 13 按需重新验证 308 Api 错误

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

刚刚启动了下一个 13 个应用程序,我正在尝试创建按需重新验证端点,但它一直给我以下错误

Error: Invalid response 308 at DevServer.revalidate 

my app dir is 
   /app
     /[locale]
       /(content)
         pages.tsx
   /pages 
     /api
       revalidation.ts   

重新验证.ts

import { NextApiRequest, NextApiResponse } from 'next';

export default async function handler(
  resquest: NextApiRequest,
  response: NextApiResponse
) {
  if (resquest.query.secret !== process.env.NEXT_REVALIDATION_TOKEN) {
    return response.status(401).json({ message: 'Invalid token.' });
  }

  const { path } = resquest.query;

  // return response.status(200).json({ revalidated: path });
  await response.revalidate(path as string);

  return response.status(200).json({ revalidated: true });
}

我认为我正确地传递了路径,但我有一种感觉,这与语言环境有关?以前有其他人有过这种情况吗?纠结了一晚上哈哈

next.js types interrupt next.js13
1个回答
0
投票

在下一个js 13中,您需要将 revalidation.ts 的名称更改为route.ts

然后在组件中使用 NextResponse 而不是 response

像这样:

import { NextApiRequest, NextApiResponse } from 'next';
import { NextResponse } from "next/server";

export default async function handler(
  resquest: NextApiRequest,
  response: NextApiResponse
) {
  if (resquest.query.secret !== process.env.NEXT_REVALIDATION_TOKEN) {
    return new NextResponse({message: 'Invalid token.'}, { status: 401 });
  }

//和其他东西

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