我今天开始从Angular 4.4.4升级到5.1.1。我不得不升级一些依赖于角度的其他软件包。我得到一个错误,上下文很少,我不知道从哪里开始。还有其他人看过这个并知道问题是什么吗?
$ ng serve --aot=false
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
Date: 2017-12-19T15:26:36.137Z
Hash: bf0b773d5dfafdd9133b
Time: 16934ms
chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
chunk {main} main.bundle.js (main) 2.93 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 636 bytes [initial] [rendered]
chunk {scripts} scripts.bundle.js (scripts) 307 kB [initial] [rendered]
chunk {styles} styles.bundle.js (styles) 4.03 MB [initial] [rendered]
chunk {vendor} vendor.bundle.js (vendor) 855 kB [initial] [rendered]
ERROR in TypeError: Cannot read property 'members' of undefined
at AotSummaryResolver.resolveSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:32638:56)
at CompileMetadataResolver._loadSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:14825:66)
at CompileMetadataResolver._getEntryComponentMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15857:66)
at C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15323:55
at Array.map (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15323:18)
at CompileMetadataResolver.getNgModuleSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15157:52)
at C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15245:72
at Array.forEach (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15230:49)
at visitLazyRoute (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:31061:104)
at AotCompiler.listLazyRoutes (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:31029:20)
at AngularCompilerProgram.listLazyRoutes (C:\source\app\node_modules\@angular\compiler-cli\src\transformers\program.js:156:30)
at Function.NgTools_InternalApi_NG_2.listLazyRoutes (C:\source\app\node_modules\@angular\compiler-cli\src\ngtools_api.js:44:36)
at AngularCompilerPlugin._getLazyRoutesFromNgtools (C:\source\app\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:248:66)
at Promise.resolve.then.then (C:\source\app\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:562:50)
webpack: Failed to compile.
我觉得很奇怪,当我在serve命令中使用--aot = false时,它会在AotSummaryResolver
开始。
这是我的package.json:
{
"name": "test",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve --aot=false",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@agm/core": "^1.0.0-beta.2",
"@angular-devkit/schematics": "^0.0.42",
"@angular/animations": "5.1.1",
"@angular/cdk": "5.0.1",
"@angular/common": "5.1.1",
"@angular/compiler": "5.1.1",
"@angular/core": "5.1.1",
"@angular/forms": "5.1.1",
"@angular/http": "5.1.1",
"@angular/platform-browser": "5.1.1",
"@angular/platform-browser-dynamic": "5.1.1",
"@angular/platform-server": "5.1.1",
"@angular/router": "5.1.1",
"@auth0/angular-jwt": "^1.0.0-beta.9",
"@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.8",
"@ng-idle/core": "^2.0.0-beta.13",
"@ngrx/core": "^1.2.0",
"@ngrx/effects": "^4.1.1",
"@ngrx/entity": "^4.1.1",
"@ngrx/store": "^4.1.1",
"@ngrx/store-devtools": "^4.1.1",
"@schematics/angular": "^0.1.11",
"@schematics/schematics": "^0.0.11",
"angular2-counto": "^1.2.3",
"bootstrap": "4.0.0-beta.2",
"core-js": "2.4.1",
"d3": "^4.11.0",
"echarts": "^3.6.0",
"echarts-gl": "^1.0.0-alpha.5",
"font-awesome": "^4.7.0",
"global": "^4.3.2",
"intl": "^1.2.5",
"jquery": "^3.2.1",
"moment": "^2.19.4",
"ng2-dnd": "^5.0.2",
"popper.js": "^1.11.0",
"roboto-fontface": "^0.7.0",
"rxjs": "^5.5.2",
"toastr": "^2.1.2",
"ts-action": "^3.2.2",
"typings": "^2.1.1",
"uuid": "^3.1.0",
"web-animations-js": "^2.2.5",
"yarn": "^0.24.5",
"zone.js": "0.8.4"
},
"devDependencies": {
"@angular/cli": "1.6.1",
"@angular/compiler-cli": "5.1.1",
"@types/d3": "^4.11.0",
"@types/echarts": "^0.0.6",
"@types/hammerjs": "^2.0.34",
"@types/jasmine": "2.5.38",
"@types/jquery": "^2.0.45",
"@types/node": "^7.0.23",
"@types/toastr": "^2.1.33",
"@types/uuid": "^3.4.0",
"codelyzer": "^4.0.2",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0",
"json-server": "^0.12.0",
"jsonwebtoken": "^7.4.1",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^0.2.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.0",
"ts-node": "~2.0.0",
"tslint": "^5.8.0",
"typemoq": "^1.7.0",
"typescript": "2.4.2"
}
}
我的angular-cli版本是1.6.1。
错误似乎发生在角度源代码中: https://github.com/angular/angular/blob/b3eb1db6dd57a0820cfc94af5460ceb3fea20610/packages/compiler/src/aot/summary_resolver.ts#L68
之前我认为它与ng-bootstrap有关,这是不正确的。
我通过在compiler.umd.js中将控制台日志放在第15207行找到了一些上下文,如下所示:
if (meta.entryComponents) {
console.log(meta);
entryComponents.push.apply(entryComponents, flattenAndDedupeArray(meta.entryComponents)
.map(function (type) { return /** @type {?} */ ((_this._getEntryComponentMetadata(type))); }));
}
导致:
...
entryComponents: [ undefined ],
...
我有一个entryComponents: [MdProgressSpinner]
的模块,其中未导入MdProgressSpinner
。当我删除它时,错误就消失了......下一个错误就来了:)
答案 0 :(得分:28)
答案 1 :(得分:4)
我有同样的问题,几乎放弃了。你的问题包含帮助我查明问题的提示,但我完全错过了它,因为它是问题的一部分。
将控制台日志放在compiler.umd.js中的第15258行(或您的错误指向的任何确切行):
if (meta.entryComponents) {
console.log(meta); //<== Add this
我的控制台日志最后包含以下内容: {ngMetadataName:'NgModule', 声明:[ null ],... entryComponents:[ null ]}
问题原来是一个导入这样一个类的模块:
import MyComponent from "./my-component.component.ts";
使用默认:
导出课程 export default class MyComponent { ...
删除default
,并为导入添加大括号!
import { MyComponent } from "./my-component.component.ts";
答案 2 :(得分:3)
我在创建新的库时收到此错误消息。原来,在该库的public_api.ts中,我正在导入 index.ts 文件。这种类型的捆绑包仍然不能很好地处理。在我的情况下,对每个文件进行单独导入以公开公共API是解决方案。
答案 3 :(得分:0)
如果您是从存储库中已经运行的应用程序中检出项目的,请检查是否在package.json中定义了构建脚本并在调用ng serve