Svelte/Sapper fetch/this.fetch 未在服务器端定义 API

Svelte/Sapper fetch/this.fetch is not defined in Server side API

这是我关于使用 Svelte/Sapper

的问题

所以我的问题是:除了使用 axios,我可以在服务器端 API 请求中继续使用 fetch 吗?

刚刚在模板[slug].json.js文件中测试,当我添加(this.)fetch函数时,它没有编译,同样的错误:(this.)fetch is not defined

非常感谢。

安装 node-fetch npm 包并在您的服务器路由中使用它而不是默认的 fetch

(在/src/routes/login.js):

import fetch from 'node-fetch'
...
// inside your route handler
const response = await fetch('http://another_server/auth') // no error

如果您不确定代码将在客户端还是服务器端执行(即您正在寻找 universal/isomorphic 方法),您可以使用条件要求:

// inside your route handler
const fetch = process.browser ? window.fetch : require('node-fetch').default
const response = await fetch('http://another_server/auth') // no error

但这在您的用例中可能有点矫枉过正,因为根据定义,服务器路由是在服务器端执行的。