Ошибка удаления резольвера "Ошибка ERROR:" [object Object] "'

У меня проблема с реализацией распознавателя на моих маршрутах, поскольку у него нет проблем, пока я не InitialDataResolver в свой модуль маршрутизации.

страницы-routing.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { FrontComponent } from '../layouts/front/front.component';
import { HomeComponent } from './home/home.component';
import { DocsComponent } from './docs/docs.component';
import { InitialDataResolver } from './../shared/resolvers/initial-data.resolver';

const routes: Routes = [
  {
    path: '',
    component: FrontComponent,
    children: [
      { path: '', component: HomeComponent },
      { path: 'docs', component: DocsComponent }
    ],
    resolve: {
      init: InitialDataResolver
    },
  }
];

@NgModule({
  imports: [ RouterModule.forChild(routes) ],
  exports: [ RouterModule ],
  providers: [ InitialDataResolver ]
})
export class PagesRoutingModule { }

начально-data.resolver.ts

import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
import { Observer } from 'rxjs/Observer';
import { AppInitService } from '../services/app-init.service';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class InitialDataResolver implements Resolve<any> {

  constructor(private appInitService: AppInitService) {}

  resolve(route: ActivatedRouteSnapshot,
          state: RouterStateSnapshot): Observable<any> {
    return Observable.create((observer: Observer<any>) => {

      this.appInitService.init()
          .subscribe(data => {
            this.appInitService.preload();
            observer.next(data);
            observer.complete();
          });

    });
  }

}

Ошибка, с которой я сталкиваюсь, является ERROR Error: "[object Object]". см. снимок ниже: object Object Error

Ответ 1

Это отсутствие подробной ошибки произошло при использовании Mozilla Firefox. так что вам нужно переключиться на Google Chrome чтобы увидеть конкретную ошибку.

Для более подробной информации перейдите по этой ссылке, чтобы узнать больше об этом.

Ответ 2

Я нашел решение для подробной ошибки работы в Firefox. Он основан на определении собственного обработчика ошибок и самостоятельной проверке свойств ошибок. После этих шагов ошибки отображались правильно, не нужно переключаться на хром.

  1. Определите пользовательский класс обработчика ошибок:
import { ErrorHandler } from '@angular/core'

export class MyErrorHandler implements ErrorHandler {

    handleError(error: any) {
        // console.error(Object.getOwnPropertyNames(error))
        // Object.getOwnPropertyNames(error).forEach(p => console.error(error[p]))
        console.error(error.fileName, error.lineNumber, ':', error.columnNumber, '\n', error.message, error.rejection)
    }

}
  1. Затем зарегистрируйте его в качестве основного поставщика в основном компоненте
@NgModule({
    declarations: []
    imports: []
    providers: [{provide: ErrorHandler, useClass: MyErrorHandler}], // <-- register MyErrorHandler
    bootstrap: [RootComponent]
})
export class AppModule { }

Ответ 3

resolve(route: ActivatedRouteSnapshot,
      state: RouterStateSnapshot): Observable<any> {
    return Observable.create((observer: Observer<any>) => {

      this.appInitService.init()
          .subscribe(data => {
            this.appInitService.preload();
            observer.next(data);
            observer.complete();
          });

    }).map(item => !!item)
}

Вышеупомянутый код будет работать для вас.

если ваша версия rxjs - 6.x, вы будете использовать .pipe(map(item => !!item))

Ответ 4

Эта ошибка возникает из-за неправильного объявления маршрутизатора. Точная ошибка никогда не появится в Firefox. Проверьте файл маршрута в хроме. # Angularjs-маршрут

Ответ 5

Ошибка может скрыть подробности в Firefox, если вы собираете без --prod и размещаете на веб-сервере, попробуйте собрать с --prod, если вы размещаете на веб-сервере, чтобы получить подробную информацию об ошибке.

Ответ 6

Одноразовое решение: найдите функцию defaultErrorLogger в dist/vendor.bundle.js и добавьте:

for (var _i = 1; _i < arguments.length; _i++) {
    values[_i - 1] = arguments[_i];
}
console.log(arguments);
console.error.apply(console, values); code here

затем обновите страницу без перекомпиляции

Ответ 7

В основном эта ошибка обнаруживается при использовании объекта базы данных из '@angular/fire'

это можно исправить с помощью this.db.object('/' +....).subscribe(...)

Ответ 8

В консоли вы можете хранить ошибки, такие как

Ошибка: "[объект объекта]"

как глобальная переменная

enter image description here

а затем получить сообщение об ошибке от объекта temp0.message