如何在 Nuxt 3 中间件获取当前域?

问题描述 投票:0回答:3

我不能在这里使用 window.location 因为它是 SSR 应用程序。 useRouter、useRoute 和 useNuxtApp 也没有域名。 nuxtApp.ssrContext 未定义。

export default defineNuxtRouteMiddleware((to: any, from: any) => {
  console.log("GET HOST HERE")
})
nuxt.js nuxtjs3
3个回答
8
投票

我只是错过了在获取 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
  }
})

3
投票

发布后我使用

useNuxtApp().ssrContext.event.node.req.headers.host

代替

useNuxtApp().ssrContext.req.headers.host

0
投票

我认为使用

useRequestHeaders()?.host
来获取相同的数据更好。

© www.soinside.com 2019 - 2024. All rights reserved.