You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt环境下useFetch调用失败,添加ssr:false后恢复的原因咨询

Nuxt环境下useFetch调用失败,添加ssr:false后恢复的原因咨询

我在Nuxt环境中运行这段代码时遇到了问题:

const response = await useFetch('https://seasee-headless.local/wp-json/wc/v3/products', {
  params: {
    consumer_secret: 'cs_471cbb0635a300909b2b13ebd52d2550fc0c857e',
    consumer_key: 'ck_ce1d0a5d3bf46ecbd46fdd18ba5f3fee41c094b4'
  },
});

得到的错误结果是:

{ "data": null, "pending": false, "error": "Error: [GET] \"https://seasee-headless.local/wp-json/wc/v3/products?consumer_secret=cs_471cbb0635a300909b2b13ebd52d2550fc0c857e&consumer_key=ck_ce1d0a5d3bf46ecbd46fdd18ba5f3fee41c094b4\": <no response> fetch failed", "status": "error" }

但当我在nuxt-config.ts里添加ssr: false之后,请求居然正常了,我有点搞不懂这背后的原因,希望能得到解答。


嗨,这个问题其实和Nuxt的SSR(服务端渲染)机制直接相关,我来给你拆解清楚:

核心原因:SSR模式下请求是在服务器端发起的

Nuxt默认开启SSR模式,这时候useFetch会优先在Nuxt的Node服务端执行请求,而不是用户的浏览器里。这里就出现了两个关键问题:

  • 网络环境不匹配:你请求的seasee-headless.local是本地运行的WordPress服务,在Nuxt的服务器端进程看来,这个本地域名可能无法解析(比如服务器端的hosts配置没对应上),或者这个WP服务只绑定了客户端的localhost,服务器端进程根本连不上它。
  • 本地服务的访问限制:很多本地开发的服务默认只允许本机的浏览器访问,会拦截来自服务器端进程的请求,导致请求连不上,自然返回<no response> fetch failed。

为什么ssr: false能解决问题?

当你把ssr设为false后,Nuxt切换成了纯客户端渲染模式,这时候useFetch的请求是在用户的浏览器里发起的——你的浏览器和本地WP服务处于同一个网络环境,能正常解析seasee-headless.local域名,也能绕过服务端的访问限制,所以请求就成功了。

额外建议(如果需要保留SSR)

如果开发时还是想用SSR模式,可以试试这几个方案:

  • 把请求地址改成服务器端能访问的路径,比如用http://localhost:xxxx(确保Nuxt服务端能访问到这个端口)
  • 配置Nuxt的代理,让服务器端请求通过代理转发到本地WP服务
  • 开发阶段临时用客户端渲染,上线时再打开SSR(只要线上的WP接口是公网可访问的,服务器端就能正常请求)

备注:内容来源于stack exchange,提问作者Amrith Sudarshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:37:58