如何使用打字稿中的 helmet.js?

How to use helmet.js from typescript?

根据文档从纯 js 使用头盔非常容易:

const express = require('express')
const helmet = require('helmet')

const app = express()

app.use(helmet())

但是我如何从打字稿中使用它呢? Typings 文件导出了一堆东西,其中一个是头盔接口,不能作为函数调用。我可以这样导入,但不知道下一步该做什么,我应该传递什么给 app.use ?

import * as helmet from 'helmet'

我已经导入了最新版本的头盔和打字:

"@types/helmet": "0.0.43",
"helmet": "^3.18.0"

这就是你可以使用的方法,只需在 app.use 方法中调用 helmet

import * as helmet from "helmet"; // Security

....


    /**
     * Create our app w/ express
     */
    this.app = express();
    this.app.use(helmet());

有关更多详细信息,请访问此 link 以获得带有 typescript 的快速应用程序

终端:

npm install helmet
npm install @types/helmet --save-dev

app.ts:

import Helmet from "helmet";

const app = express();
app.use(Helmet());

helmet 中间件应该是您在初始化 express 应用程序后首先激活的东西 object。还要注意标题名称

这样进口头盔:

import * as helmet from 'helmet';

避免以下警告:

TypeError: helmet_1.default is not a function

根据 @types/helmet,该包已被弃用,因为头盔现在有自己的类型定义。所以我不会建议你安装 @types/helmet 包。

要解决此问题,请从 package.json 文件中删除头盔依赖项,然后通过 运行:

安装最新版本的 helmet

npm i helmet

08.05.2021 使用 helm 4.6.0 我可以在 Typescript 项目中执行以下操作而无需安装任何类型:

import helmet from 'helmet';
...

app.use(helmet());

以防像我一样挣扎的人。

启用 tsconfig.json 中的 esModuleInterop 选项,警告将消失。

之后,您就不需要import * as helmet