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

Nuxt使用asyncData调用API后无法正常获取返回结果问题求助

问题排查与解决步骤
  • 首先明确$get的返回特性:你使用的是Nuxt @nuxt/http 模块提供的带$前缀的请求方法,这类方法是官方封装的语法糖,内部已经自动完成了响应体的JSON解析,直接返回解析完成的JS对象,不存在.json属性,所以你打印res.json得到undefined属于正常现象,无需额外做JSON解析操作。
  • 先验证响应内容是否正常:在你现有代码的then回调中,先打印完整的res对象,查看Nuxt服务端控制台输出的内容是否和Salesforce返回的预期结构一致,确认接口返回本身没有问题:
asyncData ({ params, error, $http }) {
  return $http
    .$get('/api/salesforce/' + params.id)
    .then((res) => {
      console.log('完整响应内容:', res) // 服务端控制台可查看该输出
      return { opp: res }
    })
    .catch((e) => {
      error({ statusCode: 404, message: 'User not found, ' + e })
    })
},
  • 排查客户端侧接口访问问题:asyncData在页面首次加载时会在服务端执行,所以你能在服务端看到正常的返回日志,但如果是客户端路由跳转时执行asyncData,请求会从浏览器发出,你可以直接在浏览器地址栏访问/api/salesforce/对应ID,确认是否能正常拿到JSON结果,大概率是代理配置错误导致客户端请求不到接口:
    检查nuxt.config.js中的proxy配置,确保/api前缀的请求能正确转发到你的Express服务,示例配置如下(根据你实际的Express服务端口调整):
// nuxt.config.js
module.exports = {
  modules: [
    '@nuxt/http',
    '@nuxtjs/proxy'
  ],
  http: {
    proxy: true
  },
  proxy: {
    '/api': {
      target: 'http://localhost:3001', // 替换为你的Express服务地址
      pathRewrite: { '^/api': '' } // 如果你的Express接口没有/api前缀,必须加该配置去除前缀
    }
  }
}
  • 排查组件重复声明问题:确认你的组件data配置项中没有重复声明opp字段,否则data里的默认值会覆盖asyncData返回的注入内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:18:03