Svelte/Sapper fetch/this.fetch 未在服务器端定义 API
Svelte/Sapper fetch/this.fetch is not defined in Server side API
这是我关于使用 Svelte/Sapper
的问题
- 我在
/src/routes/login.js
中有一个文件
- 根据 Sapper 文档,它将在
http://<my_domain>/login
中创建一个 API 端点,它会这样做
- 现在
login.js
,我想调用另一个API服务器,假设是http://another_server/auth
- 无论我如何使用
fetch
函数:fetch("http://another_server/auth")
、this.fetch("http://another_server/auth")
、Svelte 响应:(this.)fetch is not defined
.
- 文档说应该是运行在
preload()
,所以我把fetch包在export async function preload(){}
下面,没用
所以我的问题是:除了使用 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
但这在您的用例中可能有点矫枉过正,因为根据定义,服务器路由是在服务器端执行的。
这是我关于使用 Svelte/Sapper
的问题- 我在
/src/routes/login.js
中有一个文件
- 根据 Sapper 文档,它将在
http://<my_domain>/login
中创建一个 API 端点,它会这样做 - 现在
login.js
,我想调用另一个API服务器,假设是http://another_server/auth
- 无论我如何使用
fetch
函数:fetch("http://another_server/auth")
、this.fetch("http://another_server/auth")
、Svelte 响应:(this.)fetch is not defined
. - 文档说应该是运行在
preload()
,所以我把fetch包在export async function preload(){}
下面,没用
所以我的问题是:除了使用 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
但这在您的用例中可能有点矫枉过正,因为根据定义,服务器路由是在服务器端执行的。