获取调用中未定义标头
Posted
技术标签:
【中文标题】获取调用中未定义标头【英文标题】:Headers is not defined in fetch call 【发布时间】:2021-04-22 06:19:19 【问题描述】:尝试对需要基本身份验证的 API 的 URL 进行 fetch 调用。我找到了一个question,它使用 bases-64 模块对 URL 标头进行编码并将它们放入 fetch 调用中。尝试了变化,但它不起作用。
const fetch = require("node-fetch");
const base64 = require("base-64");
let url = "<URL>";
let username = "<username>";
let password = "<password>";
let headers = new Headers();
headers.set(
"Authorization",
"Basic " + base64.encode(username + ":" + password)
);
async function getCategories(url)
fetch(url,
method: "GET",
headers: headers,
)
.then((response) =>
return response.json;
)
.catch((err) =>
console.log(err);
);
getCategories(url)
.then((response) => console.log(response))
.catch((err) => console.log(err));
错误:
Headers is not defined
at Object.<anonymous> (C:\Users\User\Downloads\getCategories\getCategories.js:7:15)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
我做错了什么?
【问题讨论】:
使用let headers = new fetch.Headers()
或要求Headers
与const Headers = require("node-fetch").Headers
或const Headers = require("node-fetch");
分开使用
【参考方案1】:
Headers
构造函数在 node.js 上下文中不存在。像fetch
一样,您需要从node-fetch
包中包含它。您可以使用解构赋值从fetch
函数中获取它。
const fetch = require('node-fetch');
const Headers = fetch;
或者直接使用属性创建一个新实例。
let headers = new fetch.Headers();
更多详情请见the documentation of node-fetch
。
【讨论】:
以上是关于获取调用中未定义标头的主要内容,如果未能解决你的问题,请参考以下文章
如何绕过 ESLint 调用 Typescript 中未定义的 Geolocation 接口?