当我尝试使用 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/[email protected]/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()
返回未定义。这也与控制台中之前的错误相符:
[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
})
还没有深入研究这一点,但希望这可以提供更多背景信息。