2017-01-27 7 views
1

Я строй своего углового приложения со следующей Params нг сборки --prod --env = производство --aotAngular2 нг сборки вопрос: Загрузка куска й не удался

Над команды всегда порождает все новые фрагменты, поставщик и в комплекте файлы с новым именем хэш-файла. Я обслуживаю папку dist через Apache2 на сервере Ubuntu.

Моя проблема, когда я делаю новую сборку и обслуживать новые файлы с моего сервера, все мои пользователи начинает получать следующие ошибки

Unhandled Promise rejection: Loading chunk 2 failed. ; Zone: angular ; Task: Promise.then ; Value: Error: Loading chunk 2 failed 

Cannot read property 'map' of undefined 

После того как я обновить страницу все работает нормально, но до тех пор пока то все пользователь видит белый экран. Есть ли способ обработать эту ошибку и перезагрузить страницу с помощью кода автоматически?

angular-cli: 1.0.0-beta.24 
node: 6.2.2 
os: darwin x64 
@angular/common: 2.4.3 
@angular/compiler: 2.4.3 
@angular/core: 2.4.3 
@angular/forms: 2.4.3 
@angular/http: 2.4.3 
@angular/platform-browser: 2.4.3 
@angular/platform-browser-dynamic: 2.4.3 
@angular/router: 3.4.3 
@angular/compiler-cli: 2.4.3 

ответ

-1

Я решил это следующим образом: Вы можете предоставить собственные реализации ExtraOptions, где вы можете выполнить любую обработку ошибок, как вам нравится:

import {Injectable} from '@angular/core'; 
import {ExtraOptions} from "@angular/router"; 
import {ErrorHandler} from "@angular/router/src/router"; 

@Injectable() 
export class CustomRoutingExtraOptions implements ExtraOptions { 

    public errorHandler: ErrorHandler; // Overwrites attribute in ExtraOptions! 

    constructor(/* inject any services you need here.. */) { 
     this.errorHandler = error => { 
      console.error('routing error: ', error); 
      // any other custom handling.. 
     } 
    } 
} 

Вы должны зарегистрировать эту услугу в вашем модуле следующим образом :

import {ROUTER_CONFIGURATION} from "@angular/router"; 

@NgModule({ 
    declarations: [ 
     .. 
    ], 
    imports: [ 
     RouterModule.forRoot({...}) 
     ... 
    ], 
    providers: [ 
     {provide: ROUTER_CONFIGURATION, useClass: CustomRoutingExtraOptions}, 
     ... 
    ], 

}) 
export class AppModule { 
} 

в качестве альтернативы (если вам нужно только простая обработка ошибок), то вы можете напрямую предоставить обработчик ошибок во втором параметре RouterModule.forRoot(..).

 Смежные вопросы

  • Нет связанных вопросов^_^