NodeJS 一个aws客户端构造函数(dynamodb)上的typescript eslint警告,但另一个(s3)上没有

umuewwlo  于 2023-06-22  发布在  Node.js
关注(0)|答案(2)|浏览(114)

我是Typescript的新手,所以也许我忽略了一些明显的东西,但是我无法使用AWS v3 JavaScript SDK而不触发看起来完全是虚假的@typescript-eslint警告。下面是一个简单的片段,它重现了一个不一致之处:

import { S3Client } from "@aws-sdk/client-s3";
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
new S3Client({});
new DynamoDBClient({});

S3客户端的结构很好。没有警告。但是,DynamoDB客户端构造的最后一行生成ESLint: Unsafe construction of an any type value.(@typescript-eslint/no-unsafe-call)
这基本上是直接从他们的“hello dynamodb”文档中出来的。
这两个包都安装了,类型看起来基本相同,尽管我猜在配置类型的细节中可能隐藏了一些微妙之处(为了清晰起见稍微简化了):

export declare class S3Client extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, S3ClientResolvedConfig> {
    readonly config: S3ClientResolvedConfig;
    constructor(configuration: S3ClientConfig);
}

vs

export declare class DynamoDBClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, DynamoDBClientResolvedConfig> {
    readonly config: DynamoDBClientResolvedConfig;
    constructor(configuration: DynamoDBClientConfig);
}

它们看起来基本上是一样的。构造函数如何返回any?太奇怪了
我的package.json包含:

"dependencies": {
    "@aws-sdk/client-dynamodb": "^3.351.0",
    "@aws-sdk/client-s3": "^3.282.0",
...
moiiocjp

moiiocjp1#

我在使用这两个软件包的以下最新版本时没有发现此问题:

{
  "dependencies": {
    "@aws-sdk/client-dynamodb": "^3.352.0",
    "@aws-sdk/client-s3": "^3.352.0",
    "@aws-sdk/lib-dynamodb": "^3.272.0"
  },
  "type": "module"
}

你能提供我可以研究的可复制代码吗?

nr9pn0ug

nr9pn0ug2#

这似乎是一个构建/工具缓存问题。如果我从命令行运行eslint,我不会得到任何错误,但在WebStorm 2022.3.2中,即使我完全清除该行并重新键入,添加第二个副本,更改参数,将代码粘贴到同一项目的新文件中,eslint警告仍然存在。
我能够通过执行File > Invalidate Caches... > Just Restart来清除虚假警告。也许定期重启就足够了。
复制(对于WebStorm)似乎是在执行相关包的npm install之前引用启用了eslint工具的类。安装软件包后,错误仍然存在***。不确定这是否是定义前的eslint的一般问题(我想很多人都会遇到这个问题!)),或者是AWS代码的复杂性引发了这个问题。
留下这个问题,以防其他人使用WebStorm遇到同样的问题!

相关问题