Nuxt3服务端路由useQuery报错:Cannot find name 'xxx'
解决Nuxt3服务端路由中useQuery的TypeScript错误
你的问题出在服务端路由中误用了useQuery——useQuery是Nuxt3专为组件/Composable设计的客户端/服务端通用钩子,不能直接在服务端路由的原始事件处理逻辑里调用。
在Nuxt3的服务端路由中,获取URL查询参数直接从H3的event对象上取即可:
- 替换
const query = useQuery(event);为const query = event.query;
修改后的完整代码:
return new Promise<any>((resolve, reject) => { (async () => { try { const cookie = event.req.headers.cookie || ""; const query = event.query; // 直接从event获取query console.log(cookie); const res = await fetch( "https://auth-xx.westeurope.cloudapp.azure.com/v1/auth/rpc/o2/sessions/whoami", { headers: { Accept: "application/json", Cookie: cookie } } ); console.log("data"); const data = await res.json(); console.log(data); resolve(data); } catch (e) { reject(e); } })(); });
额外注意事项:
- 若需要类型提示,可导入H3事件类型并声明:
import type { H3Event } from 'h3';,再给event指定类型event: H3Event - 避免用
any作为Promise泛型,建议根据接口返回结构定义具体类型,提升TypeScript类型安全性
内容的提问来源于stack exchange,提问作者v-kessler
相关产品推荐
相关产品推荐

