我正在创建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"
}
}
答案 0 :(得分:1)
TextDecoder
的声明仅在TypeScript 2.8和更高版本中存在。您需要升级TypeScript或将相关声明从here复制到您的项目中。
答案 1 :(得分:0)
您需要将输出捆绑包的设置更改为ES7。转到src/tsconfig.app.json
并添加到editorOptions:
"compilerOptions": {
"lib": [
"es2017",
"dom"
]
...
答案 2 :(得分:0)
将此内容写在component.ts之上:对于Angular 5或更早版本
declare var TextDecoder: any
解决打字稿问题-2.5.x
请参阅typescript getting error TS2304: cannot find name ' require'上的帖子
答案 3 :(得分:0)
我在这里找到了解决方案: https://stackoverflow.com/a/58490704/9091402
要在 TypeScript 2.7 中使用 TextDecoder,请将 window 定义为 any
const textDecoder = new (window as any).TextDecoder('utf-8');