我不能在这里使用 window.location 因为它是 SSR 应用程序。 useRouter、useRoute 和 useNuxtApp 也没有域名。 nuxtApp.ssrContext 未定义。
export default defineNuxtRouteMiddleware((to: any, from: any) => {
console.log("GET HOST HERE")
})
我只是错过了在获取 nuxtApp.ssrContext 之前检查 process.server。这是我的问题的答案:
export default defineNuxtRouteMiddleware((to: any, from: any) => {
const nuxtApp = useNuxtApp()
let host = ''
if(process.server) {
// for 3.0.0.rc_vercions: host = nuxtApp.ssrContext.req.headers.host
// UPD 27.01.23:
host = nuxtApp.ssrContext?.event.node.req.headers.host
} else {
host = window.location.host
}
})
发布后我使用
useNuxtApp().ssrContext.event.node.req.headers.host
代替
useNuxtApp().ssrContext.req.headers.host
我认为使用
useRequestHeaders()?.host
来获取相同的数据更好。