在AOT中构建Angular模块时出现打字稿错误

时间:2018-10-11 08:15:55

标签: angular typescript

我正在使用Webpack手动构建Angular模块,而不使用CLI。进行常规构建时有效,而进行AOT构建时则无效!

tsconfig.aot.json如下:

{ "compilerOptions": { "target": "es5", "module": "es2015", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "typeRoots": [ "node_modules/@types" ], "lib": [ "es5", "es2015", "dom" ] }, "angularCompilerOptions": { "skipMetadataEmit": true, "genDir": "aot" } } 错误主要与打字稿有关:

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:829:20     TS2304:找不到名称“ PromiseConstructor”。

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:1486:36     TS2339:类型“ SymbolConstructor”上不存在属性“ for”。

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:1490:43     TS2339:类型“ SymbolConstructor”上不存在属性“ hasInstance”。

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:2305:36     TS2339:类型“ SymbolConstructor”上不存在属性“ for”。

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:2309:43     TS2339:类型“ SymbolConstructor”上不存在属性“ hasInstance”。

[加载器]中的错误。/node_modules/@types/core-js/index.d.ts:2313:50     TS2339:类型“ SymbolConstructor”上不存在属性“ isConcatSpread”。

[加载器]中的错误。/node_modules/rxjs/internal/Observable.d.ts:82:59     TS2693:“ Promise”仅指一种类型,但此处被用作值。

2 个答案:

答案 0 :(得分:0)

正常构建“正常”的原因是因为您在transpileOnly: true上设置了awesome-typescript-loader选项,该选项将禁用所有类型错误报告。删除该选项并在libtsconfig.json中将tsconfig.aot.json设置为相同后,从npm run buildnpm run build:prod都将得到大致相同的错误。

从您发布的zip文件开始,一种适合我的配置是将@types/core-js升级到撰写本文时的最新版本(2.5.0,与您的{{1} }比core-js 0.9。*的2.5.7版本),然后在两个{{1}中将@types/core-js更改为target(并删除覆盖的es6选项) }和lib。完成此操作后,tsconfig.jsontsconfig.aot.json对我来说都没有错误。

答案 1 :(得分:-1)

"@types/core-js": "0.9.35"中使用package.json,然后运行npm install。这样就可以解决。