我尝试使用Nextjs中间件在每个页面上做重定向,如果某个条件为真。
由于某种原因,每当middleware.ts中的matcher
匹配一个页面时,该页面上getServerSideProps
中的所有props在到达客户端时都是undefined
。当我从matcher
正则表达式中删除页面时,它们会以正确的值正常工作。
Middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export default async function middleware(req: NextRequest) {
return NextResponse.next();
}
export const config = {
matcher: ['/(tag|about)(.)*'],
};
如何确保getServerSideProps
仍然在触发middleware
函数的页面上触发?
(getServerSideProps
正在触发,我在终端中看到了正确的值,但我仍然在客户端获得undefined
)
2条答案
按热度按时间inkz8wg91#
我试着复制这个。但对我来说很好。请将Next.js版本更新到最新版本。如果您使用的是
app
目录。getServerSideProps
不是app
目录。对于app
目录,您可以在React Server组件中执行数据提取。https://nextjs.org/docs/pages/building-your-application/routing/pages-and-layouts#data-fetching
ghhkc1vu2#
为了确保
getServerSideProps
仍然运行,并且在使用Next.js中间件时,props在客户端可用,您可以编辑中间件代码,如下所示:修改后的代码拦截响应,序列化来自
getServerSideProps
的props
,并将它们注入HTML,以便它们在客户端可用。祝你好运