如何解决目标缺少构造签名的“新”表达式隐式具有“任意”类型
我试图放入此脚本以提高系统的安全性,但打字稿出现错误,在这种情况下,我尝试将其放入app.ts
obs:此代码是尝试将nodejs中的脚本转换为打字稿
脚本
import express from 'express';
import helmet from 'helmet';
import redis from 'redis';
import RateLimit from 'express-rate-limit';
import RateLimitRedis from 'rate-limit-redis';
import { resolve } from 'path';
import routes from './routes';
import ErrorHandler from './app/middlewares/errorHandler';
class App {
public server = express();
constructor() {
this.middlewares();
this.routes();
this.errorHandlers();
}
middlewares() {
this.server.use(express.json());
this.server.use(helmet());
if (process.env.NODE_ENV === 'production') {
this.server.use(
new RateLimit({
store: new RateLimitRedis({
client: redis.createClient({
host: process.env.REDIS_HOST,port: process.env.REDIS_PORT,}),windowMs: 1000 * 60 * 15,max: 100,);
}
}
错误区域
new RateLimit({
store: new RateLimitRedis({
client: redis.createClient({
host: process.env.REDIS_HOST,
错误消息
“新”表达式的目标缺少构造签名,它隐式地具有“任意”类型。
解决方法
您应该为这些软件包添加类型描述:
npm i @types/express-rate-limit --save-dev
npm i @types/rate-limit-redis --save-dev
这也适用于所有其他安装软件包。如果您的程序包没有相应的类型定义程序包,那么您应该自己创建它。
,我相信如果你改变了
new RateLimit({
//...
})
到
new (RateLimit as any)({
//...
}),
将解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。