Nuxt3服务端插件中useRequestEvent()返回undefined问题求助
解决Nuxt3服务端插件中useRequestEvent()返回undefined的问题
问题原因
直接在服务端插件的根级函数里调用useRequestEvent()会返回undefined,因为插件初始化阶段请求上下文还未完全建立,只有在请求处理的钩子回调中才能获取到有效的请求事件对象。
解决方法
将请求事件的获取逻辑放到Nuxt提供的请求钩子回调中,比如Nitro:beforeRequest(该钩子会在每个请求处理前触发):
// plugins/init.server.ts export default defineNuxtPlugin((nuxtApp) => { // 监听Nitro请求前钩子 nuxtApp.hook('Nitro:beforeRequest', (event) => { // 这里的event就是有效的请求事件对象 const parsedUrl = event.node.req._parsedUrl; console.log(parsedUrl); }); });
补充说明
- 如果只是需要获取请求URL的信息,也可以直接使用
event.url(Nuxt封装后的属性),无需访问原生的_parsedUrl。 _parsedUrl是Node.js原生req对象的属性,在Nitro:beforeRequest钩子触发时,请求已经完成解析,该属性会正常返回值。
内容的提问来源于stack exchange,提问作者Waleed Tariq
相关产品推荐
相关产品推荐

