nuxt3__fetch is not a function

情景复现:

在开发服务端渲染程序时, 出现开发环境可以从远程服务器正确获取到数据, 但是线上环境无法获取数据并且报错 _fetch is not a function 错误.

服务端代码

// /server/detail.get.js
export default defineEventHandler(async event => {
  return new Promise(async (resolve, reject) => {
    const { apiBase } = useRuntimeConfig()?.public
    const res = await $fetch(`${apiBase}/api/detail`).catch(err => err)
    if (res.code === 200) {
      resolve(res.data)
    } else {
      reject(res)
    }
  })
})

调用代码

const { data } = await useFetch(`/api/detail`).catch(err => err)

解决思路

https://github.com/unjs/nitro/issues/1635这个问题里, 有两位报告了本地开发环境与线上环境nodejs版本不一致时会出现该问题

  • 本地开发环境noejs版本是20, 线上是16, 尝试升级线上nodejs版本到与本地开发环境nodejs版本一致, 问题解决.
posted @ 2024-04-18 16:44  Syinho  阅读(88)  评论(0编辑  收藏  举报