从角度 8 升级到角度 9 后无法读取未定义的 属性 'createComponent'
Cannot read property 'createComponent' of undefined after upgrade from angular8 to angular9
将 angular7 应用程序升级到 angular9 后出现错误。
首先我已经更新到 angular8 然后进行 9 upgrade.Its 编译但是在 运行 应用程序之后我收到了错误。
无法读取未定义的 属性'createComponent'
TypeError: Cannot read property 'createComponent' of undefined
at UIView._applyUpdatedConfig (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:269)
at UIView._viewConfigUpdated (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:255)
at configureUIView (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:156)
at Array.forEach (<anonymous>)
at ViewService.sync (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:164)
at ViewService.registerUIView (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:191)
at UIView.ngOnInit (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:131)
at checkAndUpdateDirectiveInline (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:22505)
at checkAndUpdateNodeInline (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:31069)
at checkAndUpdateNode (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:31031)
组件
@Component({
selector: 'login-component',
templateUrl: './login.component.html',
styleUrls: ['./login.component.less'],
animations: [
trigger('slideInAnimation', [
transition(':enter', [
style({ transform: 'translateX(100%)' }),
animate(
'1s ease-in-out',
style({ transform: 'translateX(0%)' })
)
]),
transition(':leave', [
style({ transform: 'translateX(0%)' }),
animate(
'1s ease-in-out',
style({ transform: 'translateX(100%)' })
)
])
])
]
})
export class LoginComponent implements OnInit, AfterViewInit, OnDestroy {
@ViewChild('uname', { static: true }) uname: any;
constructor(
private loginService: LoginService,
private store: Store<AppState>,
private titleService: Title
) {
}
ngOnInit() {
}
ngAfterViewInit() {
if (this.uname !== undefined) {
this.uname.nativeElement.focus();
}
}
}
因为这之前有效,所以问题似乎只是来自 NodeModules。
首先,从您的应用中删除文件夹:node_modules
和 package-lock.json
。您可以在计算机上的文件夹中或在文本编辑器中执行此操作。请注意,删除可能需要几分钟时间。这是正常的。
删除后,在文本编辑器中关闭并重新启动您的应用程序。然后,在您的终端中,键入 npm install
。这也需要几分钟时间,但完成后您会注意到 node_modules
文件夹已返回。
使用 ng serve
或 npm start
从此处尝试 运行 应用程序。
如果问题仍然存在,请告诉我。您更新 Angular.
时可能缺少步骤
我有一个非 cli 混合应用程序,所以我的升级是手动的。我遇到了同样的问题(Angular 8 到 9),但重新安装我的节点模块对我没有帮助。我最终再次开始升级过程。同样,我发现自己在使用 @ui-router 模块时遇到错误。这些帮助我修复了它们:
- 移动到@ui-router/angular-hybrid@10.0.0 - https://github.com/ui-router/angular-hybrid/issues/374
- 在您的项目中包含 @ui-router/core 或手动安装对等依赖项 - https://github.com/ui-router/angular-hybrid/releases/tag/10.0.0
- 确保@ui-路由器模块没有多个副本 - https://githubmemory.com/repo/ui-router/core/issues/671
将 angular7 应用程序升级到 angular9 后出现错误。
首先我已经更新到 angular8 然后进行 9 upgrade.Its 编译但是在 运行 应用程序之后我收到了错误。
无法读取未定义的 属性'createComponent'
TypeError: Cannot read property 'createComponent' of undefined
at UIView._applyUpdatedConfig (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:269)
at UIView._viewConfigUpdated (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:255)
at configureUIView (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:156)
at Array.forEach (<anonymous>)
at ViewService.sync (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:164)
at ViewService.registerUIView (webpack-internal:///./node_modules/@uirouter/core/lib-esm/view/view.js:191)
at UIView.ngOnInit (webpack-internal:///./node_modules/@uirouter/angular/lib/directives/uiView.js:131)
at checkAndUpdateDirectiveInline (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:22505)
at checkAndUpdateNodeInline (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:31069)
at checkAndUpdateNode (webpack-internal:///./node_modules/@angular/core/fesm5/core.js:31031)
组件
@Component({
selector: 'login-component',
templateUrl: './login.component.html',
styleUrls: ['./login.component.less'],
animations: [
trigger('slideInAnimation', [
transition(':enter', [
style({ transform: 'translateX(100%)' }),
animate(
'1s ease-in-out',
style({ transform: 'translateX(0%)' })
)
]),
transition(':leave', [
style({ transform: 'translateX(0%)' }),
animate(
'1s ease-in-out',
style({ transform: 'translateX(100%)' })
)
])
])
]
})
export class LoginComponent implements OnInit, AfterViewInit, OnDestroy {
@ViewChild('uname', { static: true }) uname: any;
constructor(
private loginService: LoginService,
private store: Store<AppState>,
private titleService: Title
) {
}
ngOnInit() {
}
ngAfterViewInit() {
if (this.uname !== undefined) {
this.uname.nativeElement.focus();
}
}
}
因为这之前有效,所以问题似乎只是来自 NodeModules。
首先,从您的应用中删除文件夹:node_modules
和 package-lock.json
。您可以在计算机上的文件夹中或在文本编辑器中执行此操作。请注意,删除可能需要几分钟时间。这是正常的。
删除后,在文本编辑器中关闭并重新启动您的应用程序。然后,在您的终端中,键入 npm install
。这也需要几分钟时间,但完成后您会注意到 node_modules
文件夹已返回。
使用 ng serve
或 npm start
从此处尝试 运行 应用程序。
如果问题仍然存在,请告诉我。您更新 Angular.
时可能缺少步骤我有一个非 cli 混合应用程序,所以我的升级是手动的。我遇到了同样的问题(Angular 8 到 9),但重新安装我的节点模块对我没有帮助。我最终再次开始升级过程。同样,我发现自己在使用 @ui-router 模块时遇到错误。这些帮助我修复了它们:
- 移动到@ui-router/angular-hybrid@10.0.0 - https://github.com/ui-router/angular-hybrid/issues/374
- 在您的项目中包含 @ui-router/core 或手动安装对等依赖项 - https://github.com/ui-router/angular-hybrid/releases/tag/10.0.0
- 确保@ui-路由器模块没有多个副本 - https://githubmemory.com/repo/ui-router/core/issues/671