如何从typescript使用helmet.js?

cyej8jka  于 2022-12-01  发布在  TypeScript
关注(0)|答案(8)|浏览(138)

根据文档,使用pure js中的 Helm 非常容易:

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

const app = express()

app.use(helmet())

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

import * as helmet from 'helmet'

我已经进口了最新版本的 Helm 和打字:

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

jmo0nnb31#

终端

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

应用程序ts

import Helmet from "helmet";

const app = express();
app.use(Helmet());
  • Helm 中间件应该是你初始化express应用程序对象后激活的第一件事。还要注意标题大小写名称 *
s2j5cfk0

s2j5cfk02#

08.05.2021起,使用 Helm 4.6.0,我可以在不安装任何类型的情况下在Typescript项目中执行以下操作:

import helmet from 'helmet';
...

app.use(helmet());

以防有人像我一样挣扎。

amrnrhlw

amrnrhlw3#

这正是你可以使用的方法,只需在应用程序中调用helmet。

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

....

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

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

pxyaymoc

pxyaymoc4#

根据@types/helmet,这个包已经被弃用了,因为helmet现在有自己的类型定义,所以我不建议你安装@types/helmet包。
要解决此问题,请从package.json文件中删除 Helm 依赖项,然后通过运行以下命令安装最新版本的helmet
npm i helmet

avwztpqn

avwztpqn5#

导入 Helm 方式:

import * as helmet from 'helmet';

以避免以下警告:

TypeError: helmet_1.default is not a function
xdyibdwo

xdyibdwo6#

tsconfig.json中启用esModuleInterop选项,警告将消失。
之后,就不需要import * as helmet了。

q8l4jmvw

q8l4jmvw7#

对于5.1.0版的 Helm ,您需要按以下方式导入:
import helmet from 'helmet'
以避免出现以下警告:
This expression is not callable.

1aaf6o9v

1aaf6o9v8#

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

我导入为

import * as helmet from 'helmet';

后来又将其添加为

app.use(helmet.default());

helmet.default()似乎代替了helmet()

相关问题