刚刚启动了下一个 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 });
}
我认为我正确地传递了路径,但我有一种感觉,这与语言环境有关?以前有其他人有过这种情况吗?纠结了一晚上哈哈
在下一个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 });
}
//和其他东西
}