nuxt 请求错误未处理 500 无法读取未定义的属性(读取"getHeader")



当我在第一次使用nuxt和Prisma的项目中尝试设置一个设置cookie时,它给了我一个错误,说无法读取未定义的属性(读取"getHeader"(,我不知道我的代码出了什么问题

my login auth

import { sendError } from 'h3'
import { createUser } from '~~/server/db/users'
import { userTransformer } from '~~/server/transformer/user'
export default defineEventHandler(async (event) => {
const body = await useBody(event)
const { username, email, password, repeatPassword, name } = body
if (!username || !email || !password || !repeatPassword || !name) {
return sendError(event, createError({
statusCode: 400, statusMessage: "Invalid params"
}))
}
if (password !== repeatPassword) {
return sendError(event, createError({
statusCode: 400, statusMessage: "Password not match"
}))
}
const userData = {
username, email, password, name, profileImage: 'https://picsum.photos/200/200'
}
const user = await createUser(userData)
return {
body: userTransformer(user)
}
})

my setcookie function

export const sendRefreshToken = (event:any, token:any) => {
setCookie(event.res, "refresh_token", token, {
httpOnly: true,
sameSite: true
})
} 

遇到了同样的情况。

错误来自nuxt-root.vue,所以我用VITE_NODE_DEBUG_DUMP=true pnpm dev查找转换后的代码

错误代码的片段在nuxt3/dist/app/components/nuxt-root.vue:76:16中为:

// ...
// L72
const __vite_ssr_import_5__ = await __vite_ssr_import__("vue");
const _sfc_setup = _sfc_main.setup
_sfc_main.setup = (props, ctx) => {
const ssrContext = __vite_ssr_import_5__.useSSRContext()
;(ssrContext.modules || (ssrContext.modules = new Set())).add("../node_modules/.pnpm/nuxt3@3.1.1-rc.0-27911047.7d812db/node_modules/nuxt3/dist/app/components/nuxt-root.vue")
return _sfc_setup ? _sfc_setup(props, ctx) : undefined
}
const __vite_ssr_import_6__ = await __vite_ssr_import__("/@id/__x00__plugin-vue:export-helper");

服务器似乎没有在Vue SSR上下文中运行,其中useSSRContext()返回undefined。这也与控制台中以前的错误相匹配:

[Vue warn]: inject() can only be used inside setup() or functional components.
[Vue warn]: Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.
[Vue warn]: Unhandled error during execution of setup function

从这个意义上说,禁用SSR将绕过这个错误:

export default defineNuxtConfig({
ssr: false
})

我还没有深入研究,但希望这能提供更多的背景。

最新更新