简体   繁体   English

Angular App 从 V8 升级到 V9 后无法编译

[英]Angular App cannot compile after update from V8 to V9

I have recently updated my angular app from V8 to V9 using this guide provided by the official Angular site.我最近使用官方 Angular 站点提供的本指南将我的 angular 应用程序从 V8 更新到 V9。 I followed all the steps from the guide and the app was successfully updated, but now when I try to build, I get loads of errors related to pipes directives and even components that I am using in my templates.我按照指南中的所有步骤操作,应用程序已成功更新,但是现在当我尝试构建时,我收到了大量与管道指令甚至我在模板中使用的组件相关的错误。

Here's one example for errors on pipes :这是管道错误的一个示例:

Cannot declare 'TimeAgoPipe' in an NgModule as it's not a part of the current compilation.无法在 NgModule 中声明“TimeAgoPipe”,因为它不是当前编译的一部分。

Another example of errors on directives :指令错误的另一个例子:

Can't bind to 'ngModel' since it isn't a known property of 'input'无法绑定到“ngModel”,因为它不是“input”的已知属性

This code worked perfectly fine on Angular 8:这段代码在 Angular 8 上运行良好:

<input required name="password" class="form-control mr-sm-2" type="password" placeholder="Password" [(ngModel)]="model.password"/>

It can't even find components that I have created even though they have been declared in the app.module.ts file.它甚至无法找到我创建的组件,即使它们已在app.module.ts文件中声明。 It's giving me this error:它给了我这个错误:

'app-nav' is not a known element: 'app-nav' 不是已知元素:

  1. If 'app-nav' is an Angular component, then verify that it is part of this module.如果 'app-nav' 是一个 Angular 组件,那么验证它是否是这个模块的一部分。

  2. If 'app-nav' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.如果“app-nav”是一个 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“@NgModule.schemas”以抑制此消息。

Here's my app.module.ts file where everything it is not finding has been included:这是我的app.module.ts文件,其中包含未找到的所有内容:

    import { BrowserModule, HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
    import { NgModule, Injectable } from '@angular/core';
    import { HttpClientModule } from '@angular/common/http';
    import { FormsModule, ReactiveFormsModule } from '@angular/forms';
    import { RouterModule } from '@angular/router';
    import { JwtModule } from '@auth0/angular-jwt';
    import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
    import { BsDropdownModule, PaginationModule, ButtonsModule } from 'ngx-bootstrap';
    import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
    import { TabsModule } from 'ngx-bootstrap/tabs';
    import { NgxGalleryModule } from 'ngx-gallery';
    import { FileUploadModule } from 'ng2-file-upload';
    import { TimeAgoPipe } from 'time-ago-pipe';
    import { CommonModule, DatePipe } from '@angular/common';

    import { AppComponent } from './app.component';
    import { NavComponent } from './nav/nav.component';
    import { AuthService } from './_services/auth.service';
    import { HomeComponent } from './home/home.component';
    import { RegisterComponent } from './register/register.component';
    import { ErrorInterceptorProvider } from './_services/error.interceptor';
    import { MembersListComponent } from './members/members-list/members-list.component';
    import { ListsComponent } from './lists/lists.component';
    import { MessagesComponent } from './messages/messages.component';
    import { appRoutes } from './routes';
    import { MemberCardComponent } from './members/member-card/member-card.component';
    import { environment } from 'src/environments/environment';
    import { MemberDetailComponent } from './members/member-detail/member-detail.component';
    import { UserService } from './_services/user.service';
    import { AlertifyService } from './_services/alertify.service';
    import { AuthGuard } from './_guards/auth.guard';
    import { MemberDetailResolver } from './_resolvers/member-detail.resolver';
    import { MemberListResolver } from './_resolvers/member-list.resolver';
    import { MemberEditComponent } from './members/member-edit/member-edit.component';
    import { MemberEditResolver } from './_resolvers/member-edit.resolver';
    import { PreventUsavedChangesGuard } from './_guards/prevent-usaved-changes.guard';
    import { DetailCardContentComponent } from './members/detail-card-content/detail-card-content.component';
    import { PhotoEditorComponent } from './members/photo-editor/photo-editor.component';

    export function tokenGetter() {
      return localStorage.getItem(environment.authTokenName);
    }
    @Injectable()
    export class CustomHammerConfig extends HammerGestureConfig {
      overrides = {
        pinch: { enable: false },
        rotate: { enable: false }
      };
    }
    @NgModule({
      declarations: [
        AppComponent,
        NavComponent,
        HomeComponent,
        RegisterComponent,
        MembersListComponent,
        ListsComponent,
        MessagesComponent,
        MemberCardComponent,
        MemberDetailComponent,
        MemberEditComponent,
        DetailCardContentComponent,
        PhotoEditorComponent,
        TimeAgoPipe,
        DatePipe
      ],
      imports: [
        BrowserModule,
        HttpClientModule,
        FormsModule,
        ReactiveFormsModule,
        CommonModule,
        BsDropdownModule.forRoot(),
        TabsModule.forRoot(),
        BsDatepickerModule.forRoot(),
        ButtonsModule.forRoot(),
        BrowserAnimationsModule,
        RouterModule.forRoot(appRoutes),
        PaginationModule.forRoot(),
        NgxGalleryModule,
        FileUploadModule,
        JwtModule.forRoot({
          config: {
            tokenGetter,
            whitelistedDomains: environment.routesWithAuthorization,
            blacklistedRoutes: environment.routesWithoutAuthorization
          }
        })
      ],
      providers: [
        AuthService,
        UserService,
        AlertifyService,
        AuthGuard,
        PreventUsavedChangesGuard,
        MemberDetailResolver,
        MemberListResolver,
        MemberEditResolver,
        ErrorInterceptorProvider,
        { provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }
      ],
      bootstrap: [AppComponent]
    })
    export class AppModule {}

Update更新

The solution suggested by Instinct and from https://github.com/AndrewPoyntz/time-ago-pipe/issues/33 works. Instinct 和https://github.com/AndrewPoyntz/time-ago-pipe/issues/33建议的解决方案有效。 You have to remember to disable AOT compilation on angular.json though你必须记住在 angular.json 上禁用 AOT 编译

It looks like this module isn't updated for Angular 9. I found a workaround here看起来这个模块没有针对 Angular 9 更新。我在这里找到了一个解决方法

https://github.com/AndrewPoyntz/time-ago-pipe/issues/33 https://github.com/AndrewPoyntz/time-ago-pipe/issues/33

import { TimeAgoPipe } from 'time-ago-pipe';

@Pipe({
    name: 'timeAgo',
    pure: false
})
export class TimeAgoExtendsPipe extends TimeAgoPipe {}

@NgModule({
    declarations: [
        TimeAgoExtendsPipe,
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将 Angular 从 v8 更新到 v9 并启用 ivy 为 true 后,组件在开始时未加载 - After updating Angular from v8 to v9 and enabling ivy to true, component is not loading at beginning Angular 从 v9 更新到 v10 后出错。 在初始化之前使用属性“propertyName” - Error after Angular update from v9 to v10. Property 'propertyName' is used before its initialization 将我的Angular应用程序从v7升级到v8 ng后,serve不再能够找到启动它的项目 - After upgrading my Angular app from v7 to v8 ng serve is no longer able to find the project to start it up Angular 类型错误:升级到 Angular v9 后无法读取 null 的属性“选择器” - Angular TypeError: Cannot read property 'selectors' of null After Upgrading to Angular v9 将 NG-Zorro 从 V8 升级到 V9 给出:“Class extends value undefined is not a constructor or null” - Upgrading NG-Zorro from V8 to V9 gives: “Class extends value undefined is not a constructor or null” Angular v9 到 v10 更新错误`无法将“@Injectable”装饰器添加到没有设置该装饰器的提供程序。 - Angular v9 to v10 update error `Cannot add the "@Injectable" decorator to providers which don't have that decorator set.` Angular Angular 从 v7 升级到 v8 后出现 Karma 错误 - Angular Karma error after upgrading Angular from v7 to v8 Angular v9 升级后应用程序冻结/无限加载而没有错误 - Angular app freeze/infinite loading after v9 upgrade without error 升级到 Angular v9 并启用 Ivy 后,Angular 编译失败 - Angular compilation fails after upgrade to Angular v9 and enabling Ivy Angular 项目从 v8 更新到 v10 使捆绑包变得非常大 - Angular project update from v8 to v10 makes bundles horribly large
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM