TypeScript 在 Express 中添加自定义请求标头

尼古拉斯·波特

我正在尝试向我的请求添加自定义标头,但必须在界面中对其进行修改/实现。

默认Request接口引用IncomingHttpHeaders. 所以我试图用我自己的自定义令牌标头扩展这个接口。

import { IncomingHttpHeaders } from 'http';

declare module 'express-serve-static-core' {
    interface IncomingHttpHeaders {
        "XYZ-Token"?: string
    }
}

我已更新我的.tsconfig文件以读取该./types文件夹。我的文件名是index.d.ts

如果我不使用自定义标头,我可以成功编译代码,但是当我尝试在代码中引用令牌标头时,我收到以下编译错误:

错误

error TS2538: Type 'string[]' cannot be used as an index type.

    req.headers['XYZ-Token']

如果我使用原始界面的任何值,一切正常。

例子:

    req.headers['user-agent']

附加信息:我正在使用 NestJS,它在底层使用 Fastify/Express。我可以确认正在使用的请求接口来自 Express。Fastify 向后兼容所有 Express 模块。主要使用 Fastify 因为它更快。

尼古拉斯·波特

声明中似乎有错误的模块名称。

即使IncomingHttpHeaders接口Request附加到对象express-serve-static-coreIncomingHttpHeaders接口的原始来源实际上是http包的一部分

以下允许在代码中访问自定义标头并正确编译 ts。

import { IncomingHttpHeaders } from 'http';

declare module 'http' {
    interface IncomingHttpHeaders {
        "XYZ-Token"?: string
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章