Ошибка удаления резольвера "Ошибка 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]"
. см. снимок ниже:
Ответы
Ответ 1
Это отсутствие подробной ошибки произошло при использовании Mozilla Firefox
. так что вам нужно переключиться на Google Chrome
чтобы увидеть конкретную ошибку.
Для более подробной информации перейдите по этой ссылке, чтобы узнать больше об этом.
Ответ 2
Я нашел решение для подробной ошибки работы в Firefox. Он основан на определении собственного обработчика ошибок и самостоятельной проверке свойств ошибок. После этих шагов ошибки отображались правильно, не нужно переключаться на хром.
- Определите пользовательский класс обработчика ошибок:
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)
}
}
- Затем зарегистрируйте его в качестве основного поставщика в основном компоненте
@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
В консоли вы можете хранить ошибки, такие как
Ошибка: "[объект объекта]"
как глобальная переменная
а затем получить сообщение об ошибке от объекта temp0.message