Javascript TypeError:request.headers.entries不是函数

Javascript TypeError:request.headers.entries不是函数,javascript,typescript,mocha.js,typescript2.0,Javascript,Typescript,Mocha.js,Typescript2.0,我的代码从请求对象的头中获取条目。 请求的类型为 在浏览器环境中执行传输的代码可以正常工作,但运行mocha测试会返回 TypeError:request.headers.entries不是函数 我的tsconfig文件: { "compilerOptions": { "module": "commonjs", "noEmitOnError": true, "noImplicitAny": false, "moduleResolution": "node",

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

在浏览器环境中执行传输的代码可以正常工作,但运行mocha测试会返回

TypeError:request.headers.entries不是函数

我的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文件进行编译
摩卡咖啡版本:5.2.0
打字脚本版本: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;
}

您正在使用基于
节点获取的
同构获取

当您在node中运行测试时,实际上使用了
节点fetch
提供的
请求
标题
等的多填充,而不是浏览器中的本机填充

因此,测试中使用的实际
Headers
类位于
node\u modules/node fetch/lib/Headers.js中,不幸的是,它的实现中没有
条目


我认为为测试设置一个合适的浏览器环境是解决您的问题的最佳解决方案,但我在这方面没有经验,也不能真正帮助您解决这个问题。

但您实际如何运行测试?我的意思是,
请求
甚至不存在于节点环境中。我使用的是
同构获取
,它确实有这个
请求
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");
    });
});