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

Nuxt 3 useFetch 组合式函数调用API报错求助

Nuxt3 组合式函数调用API获取数据失败排查方案

问题描述

我正在学习Nuxt3,遇到一个问题:我有一个/api/cars/city的API端点(支持多个可选筛选器),这个端点本身运行正常,但我写的useFetchCars.js组合式函数调用它时始终报错无法获取数据,我觉得代码逻辑没问题,求帮忙排查原因。

组合式函数代码

export default async (city, filters) => {
    const {data, error} = await useFetch(`/api/cars/${city}`, {
        params: {
            ...filters,
        }
    });

    if(error) {
        throw createError({
            ...error.value,
            statusMessage: "Unable to fetch cars",
        })
    };

    return data;
};

页面代码

<script setup>
  const route = useRoute();
  const cars = await useFetchCars(route.params.city, {
    minPrice: route.query.minPrice,
    maxPrice: route.query.maxPrice,
    make: route.params.make
  })

</script>

<template>
  <div>
    {{ cars }}
    <CarCards />
  </div>
</template>

排查步骤

  • 修正错误判断逻辑
    当前代码中直接判断if(error)是错误的,因为useFetch返回的error是Ref对象,永远为真。必须判断error.value是否存在,这很可能是导致报错的核心原因:

    if (error.value) {
      throw createError({
        ...error.value,
        statusMessage: "Unable to fetch cars",
      })
    }
    
  • 检查city参数有效性
    确认route.params.city是否有有效值:如果路由未正确定义city参数,或者页面路径中没有该参数,会导致请求路径变成/api/cars/,触发404错误。可以在组合式函数开头添加日志确认:

    console.log('当前城市参数:', city)
    
  • 过滤无效筛选参数
    当route.query.minPrice、maxPrice或route.params.make为undefined时,会被拼入URL参数中(如?minPrice=undefined),可能导致后端解析失败。需要先过滤空值:
    修改组合式函数的params配置:

    params: Object.fromEntries(
      Object.entries(filters).filter(([_, value]) => value !== undefined)
    )
    
  • 核对API端点路径
    你提到的端点是/api/cars/city,但组合式函数中拼接的路径是/api/cars/${city}。如果端点是固定路径而非动态参数,需要调整请求路径为/api/cars/city,并将city作为参数传入params中。

  • 查看实际请求详情
    打开浏览器开发者工具的Network面板,查看请求的URL、状态码和响应内容,确认是否是路径错误、参数错误或后端返回的具体错误信息。也可以在错误分支中打印详细错误:

    if (error.value) {
      console.error('请求错误详情:', error.value)
      throw createError({
        ...error.value,
        statusMessage: "Unable to fetch cars",
      })
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:27:38