【问题标题】:Cannot find name 'TextDecoder' in TypeScript.2.7在 TypeScript.2.7 中找不到名称“TextDecoder”
【发布时间】:2021-11-02 07:05:00
【问题描述】:

我正在创建一个 Angular 6 应用程序(使用 TypeScript 2.7)并希望使用 TextDecoder 原生函数。当我运行 ng build --aot 时,我收到错误:错误 TS2304:找不到名称“TextDecoder”。

任何帮助将不胜感激。下面是我的 tsconfig.json 文件和我的 package.json 文件中的包列表。

谢谢, 鲍勃

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

  "dependencies": {
    "@angular/animations": "^6.0.5",
    "@angular/cdk": "^6.2.1",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/material": "^6.2.1",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "bootstrap": "^4.1.1",
    "core-js": "^2.5.4",
    "hammerjs": "^2.0.8",
    "npm": "^6.1.0",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.6.8",
    "@angular/cli": "~6.0.8",
    "@angular/compiler-cli": "^6.0.3",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^10.5.7",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1",
    "typescript": "~2.7.2"
  }
}

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    您需要将输出包的设置更改为 ES7。转到 src/tsconfig.app.json 并添加到 compilerOptions:

    "compilerOptions": {
        "lib": [
            "es2017",
            "dom"
        ]
    }
    

    【讨论】:

      【解决方案2】:

      TextDecoder 的声明仅存在于 TypeScript 2.8 和更新版本中。您需要升级 TypeScript 或将 here 中的相关声明复制到您的项目中。

      【讨论】:

        【解决方案3】:

        在 component.ts 上写这个:对于 Angular 5 或早期版本

        declare var TextDecoder: any
        

        在 typescript 上为我解决问题 - 2.5.x

        查看typescript getting error TS2304: cannot find name ' require'上的帖子

        【讨论】:

          【解决方案4】:

          我在这里找到了解决方案: https://stackoverflow.com/a/58490704/9091402

          要将 TextDecoder 与 TypeScript 2.7 一起使用,请将 window 定义为 any

          const textDecoder = new (window as any).TextDecoder('utf-8');
          

          【讨论】:

            猜你喜欢
            • 2016-05-23
            • 2016-12-04
            • 1970-01-01
            • 2019-10-28
            • 2016-11-05
            • 2018-08-29
            • 1970-01-01
            • 2016-01-24
            相关资源
            最近更新 更多