我在访问包含所有内容的 nuxt js 插件中的 url 时遇到问题。简而言之:URL 中的一部分向我显示了人们从哪个国家/地区进行访问,以及应该在 api 调用中使用该国家/地区。
window.location
不起作用,因为它是 SSR 并且窗口在那里不可用。
req.headers.host
不起作用,因为 nuxtgenerate 已在登台/生产上运行
编辑:路由对象不会向我提供有关域的任何信息。之后只有部分。例如,对于 www.test.nl/about ,它不会在任何地方返回 www.test.nl
在这种情况下我有办法获得完整的网址吗?
如果确实与
host
有关,您可以使用 process.client
检查来包装您的插件代码。这样您的代码只会在客户端上执行,您可以安全地使用window.location.host
。
如果没有主机的当前路由就足够了,您可以使用
route
对象,它是传递给您的插件的上下文对象的一部分(适用于服务器和客户端)。
export default function ({ route }) {
if (process.client) {
console.log(window.location.host)
}
console.log(route)
}
对于 Nuxt 3,您可以使用
useRequestURL()
api。在服务器端和客户端上工作。
~/plugins/file.ts
export default defineNuxtPlugin(() => {
console.log(useRequestURL())
})
// OUTPUT:
/*
hash: ""
host: "localhost:3000"
hostname: "localhost"
href: "http://localhost:3000/"
origin: "http://localhost:3000"
password: ""
pathname: "/"
port: "3000"
protocol: "http:"
search: ""
*/