gpt4 book ai didi

javascript - TypeError : request. headers.entries 不是函数

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:47 24 4
gpt4 key购买 nike

我的代码从请求对象的 header 中获取条目。请求的类型为 Request

let headers = {};
for (const pair of request.headers.entries()) {
headers[pair[0]] = pair[1];
}

执行转译代码在浏览器环境中工作正常,但运行 Mocha 测试会返回

TypeError: request.headers.entries is not a function

我的 tsconfig 文件:

{
"compilerOptions": {
"module": "commonjs",
"noEmitOnError": true,
"noImplicitAny": false,
"moduleResolution": "node",
"removeComments": false,
"sourceMap": true,
"downlevelIteration": true,
"target": "es5",
"lib": ["es7", "dom", "dom.iterable"],
"declaration": true
}
}

编辑:
我的测试是用 typescript 编写的,它使用上面的 tsconfig 文件进行编译。
Mocha 版本:5.2.0
typescript 版本:2.2.1

我的实际代码:

export const getHeaders = (request: Request): Record<string, string> => {
let headers = {};
for (const pair of request.headers.entries()) {
headers[pair[0]] = pair[1];
}
return headers;
}

我的测试:

describe("getHeaders", function() {
it('Should return headers', () => {
let req = new Request("/testurl", {
method: "GET",
headers: new Headers({"test": "test"})
})
assert.equal(getHeaders(req).test, "test");
});
});

最佳答案

您正在使用isomorphic-fetch这是基于node-fetch .

当你在节点中运行测试时,你实际上使用了Request的polyfills , Headers等由node-fetch提供而不是我们在浏览器中使用的 native 。

所以实际的 Headers测试中使用的类位于 node_modules/node-fetch/lib/headers.js不幸的是它没有 entries在其实现中。

我认为设置适当的浏览器环境进行测试将是解决您问题的最佳解决方案,但我对此主题没有经验,无法真正帮助您解决此问题。

关于javascript - TypeError : request. headers.entries 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com