AWS JavaScript SDK v3 -由于错误TS 2304,Typescript无法编译:找不到名称“Uncategorized”

djmepvbi  于 2023-06-30  发布在  TypeScript
关注(0)|答案(4)|浏览(172)

我正在尝试构建使用AWS JavaScript SDK v3的项目。我的tsconfig.json

{
  "compilerOptions": {
    "target":"ES2020",
    "module": "commonjs",
    "lib": ["es2020"],
    "outDir": "dist",
    "resolveJsonModule": true,
  },
  "exclude": [
    "coverage",
    "node_modules",
    "dist",
    "tests"
  ]
}

下面是我得到的构建错误的示例(为了简洁起见,我去掉了一些输出):

node_modules/@aws-sdk/client-s3/types/models/models_1.d.ts:727:23 - error TS2304: Cannot find name 'ReadableStream'.

node_modules/@aws-sdk/client-s3/types/models/models_1.d.ts:727:40 - error TS2304: Cannot find name 'Blob'.

node_modules/@aws-sdk/util-dynamodb/types/models.d.ts:19:86 - error TS2304: Cannot find name 'File'.

我不明白为什么会出现这样的问题,即使我已经安装了@types/node模块来支持节点类型

3hvapo4f

3hvapo4f1#

原来,为了让 typescript 找到BlobFile等。我不得不将dom条目添加到tsconfig.json的库中。这里是我最终的tsconfig,它允许我正确地构建项目

{
  "compilerOptions": {
    "target":"ES2020",
    "module": "commonjs",
    "lib": ["es2020", "dom"],
    "outDir": "dist",
    "resolveJsonModule": true,
  },
  "exclude": [
    "coverage",
    "node_modules",
    "dist",
    "tests"
  ]
}
sxpgvts3

sxpgvts32#

如果不将dom库包含在tsconfig.json

// src/@types/dom.ts (or any file included in the tsc compilation)

export {}

declare global {
  type ReadableStream = unknown
  type Blob = unknown
}
niknxzdl

niknxzdl3#

我使用了declare global解决方案,但我必须将其中一个类型声明为“any”,以绕过实现Storage类的类:

export declare class UniversalStorage implements Storage {

因此,我让所有的违规者输入“任何”,而不是“未知”

kcwpcxri

kcwpcxri4#

始终建议将aws-sdk v3与Node 18结合使用。如果不想包含DOM,可以在tsconfig中指定Node 18。

{
    //...
    "compilerOptions": {
        "target":"ES2022",
        "module": "commonjs",
        "lib": ["es2022"],
        //...
    }
    //...
}

此外,您应该在版本18中使用@types/node

npm i -D @types/node@18

相关问题