我正在使用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”仅指一种类型,但此处被用作值。
答案 0 :(得分:0)
正常构建“正常”的原因是因为您在transpileOnly: true
上设置了awesome-typescript-loader
选项,该选项将禁用所有类型错误报告。删除该选项并在lib
和tsconfig.json
中将tsconfig.aot.json
设置为相同后,从npm run build
和npm 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.json
和tsconfig.aot.json
对我来说都没有错误。
答案 1 :(得分:-1)
在"@types/core-js": "0.9.35"
中使用package.json
,然后运行npm install
。这样就可以解决。