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

Nuxt3本地Server/api调用失败问题求助

问题

尝试通过API从Strapi CMS获取数据时遇到500错误。在useGetData.ts组合式函数中调用server/api/get-data接口时,报错信息如下:

[GET] "http://localhost:1337/api/hello-world?locale=es-ES&populate=*": <no response> fetch failed

用Postman调用该API一切正常,API密钥和端点也没问题。但把端点从本地CMS换成线上CMS时,所有功能都能正常运行。想问下Nuxt3的server/api调用本地运行的API是不是有什么问题?

相关代码:

useGetData.ts

const {data, seo} = await $fetch('/api/strapi/retrieve-data', {
                method: 'POST',
                body: {locale: iso, collection: collection},
            })

server/api/get-data

const data = await $fetch(`${strapiURL}/api/${body.collection}`, {
        method: "GET",
        headers: {
            "Authorization": `Bearer ${strapiToken}`
        },
        query: {locale: body.locale, populate: '*'}
    });
解决方案

Nuxt3的server/api本身调用本地API没有问题,大概率是本地环境的网络或配置细节出了问题,以下是几种排查和解决方向:

  • 本地域名解析问题:
    当Nuxt服务器端代码调用localhost:1337时,在Docker容器、WSL这类环境里,localhost可能指向的是Nuxt所在的容器/环境,而非宿主机的Strapi服务。可以试试把strapiURL里的localhost换成宿主机真实IP(比如192.168.x.x),WSL环境用172.17.0.1,Docker环境用host.docker.internal来访问宿主机的Strapi。

  • Strapi的CORS配置:
    虽然Postman能正常访问,但Nuxt服务器端的请求可能被Strapi的CORS策略拦截。去Strapi后台的Settings > Security > CORS里检查配置,确保允许Nuxt服务的域名(比如本地开发的http://localhost:3000),开发环境可以暂时把CORS放宽到允许所有来源*测试。

  • 端口占用或Strapi服务状态:
    确认本地Strapi确实在1337端口正常运行,没被其他程序占用。Windows用netstat -ano | findstr :1337,Mac/Linux用lsof -i :1337检查端口,重启Strapi服务后再测试。

  • Nuxt环境变量配置:
    检查strapiURL和strapiToken的环境变量是否在Nuxt服务器端正确加载。可以在server/api/get-data里临时打印这两个变量的值,确认和Postman里用的一致,避免环境变量没正确注入导致的错误。

  • 请求超时设置:
    本地Strapi首次启动或数据量较大时,响应可能偏慢,默认的fetch超时时间可能不够。可以在server/api/get-data的$fetch选项里加timeout: 10000(10秒),延长超时时间试试。

内容的提问来源于stack exchange,提问作者noel293

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:37:34