我正在使用 next-connect
将一些快速中间件应用于我的 next.js 应用程序。在尝试添加 csrf 中间件时,遇到以下错误:
res.redirect is not a function
此错误仅在我在 getServerSideProps
中应用中间件时出现,它在我的 API 端点中运行良好。
这例如:
// in /pages/api/test.ts
nc()
.use(db)
.use(initializedSession)
.use(csrfProtection)
.use(initializedPassport)
.use(initializedPassportSession)
.post(
passport.authenticate("local",{failureRedirect: "/login"}),(req: Nextapirequest,res: Nextapiresponse,next) => {
return res.redirect("/");
}
)
确实有效,但在 getServerSideProps
中为反应页面应用相同的方法:
// In /pages/login.tsx
export const getServerSideProps: GetServerSideProps = async ({req,res}) => {
await nc()
.use(db)
.use(initializedSession)
.use(csrfProtection)
.use(initializedPassport)
.use(initializedPassportSession)
.run(req,res);
return {
props: {
csrfToken: req.csrfToken(),},};
};
不起作用并导致 res
没有重定向方法。
我不太确定这种行为,但我确定我错过了一些愚蠢的东西。任何人的想法?