目录
情景复现:
在开发服务端渲染程序时, 出现开发环境可以从远程服务器正确获取到数据, 但是线上环境无法获取数据并且报错 _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版本一致, 问题解决.