Mar*_*mal 2 javascript node.js next.js prisma next-auth
我正在尝试使用 NextJS 13 和 TypeScript、Next Auth v4、Prisma(带有用于开发的 SQLite 数据库)和 OpenAI 创建一个 Web 应用程序。
每当我访问 API 端点时,控制台都会显示错误并显示以下消息:
错误 - TypeError:res.getHeader 不是函数
在 setCookie (webpack-internal:///(sc_server)/./node_modules/next-auth/next/utils.js:11:49)
我发现每当代码尝试getServerSession()在这一行分配会话变量时都会失败:
export async function GET(
req: NextApiRequest,
res: NextApiResponse
) {
const session = await getServerSession(req, res, authOptions) // <-- here it fails
const sessionErrors = checkSessionErrors(session, req.url);
if (sessionErrors) return sessionErrors;
// rest of the code
}
Run Code Online (Sandbox Code Playgroud)
我一直在互联网上进行研究,发现了一些与 Webpack 中间件相关的问题。但我没有使用任何中间件。
我也尝试过将代码替换为如下所示:
export async function GET(req: NextRequest) {
const session = await getServerSession() // not sure how to fill this now
const sessionErrors = checkSessionErrors(session, req.url);
if (sessionErrors) return sessionErrors;
// rest of the code
// return stuff with NextResponse.json()
}
Run Code Online (Sandbox Code Playgroud)
现在不知道如何继续,对此有何建议?
小智 8
getServerSession期望NextApiRequest和NextApiResponse争论。我通过添加getHeader和setHeader函数解决了这个问题NextResponse:
export async function POST(req: NextRequest, res: NextResponse) {
const session = await getServerSession(
req as unknown as NextApiRequest,
{
...res,
getHeader: (name: string) => res.headers?.get(name),
setHeader: (name: string, value: string) => res.headers?.set(name, value),
} as unknown as NextApiResponse,
authOptions
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2848 次 |
| 最近记录: |