Впервые на Angular, и при запуске отладчика в VS Code я получаю это в консоли отладки.В проекте все работает нормально, я могу войти в систему, выполнить различные действия на сайте и т. Д.
Как мне отладить это, чтобы выяснить, где эта переменная равна нулю и / или используется иисправить это, так что я не вижу это сообщение об ошибке?
Ошибка: Uncaught (в обещании): Ошибка типа: Не могу прочитать свойство 'data' из null
Я могуПосмотрите из bebugger, он показывает строку в core.js: 15724, то есть это
unction defaultErrorLogger(console) {
var values = [];
for (var _i = 1; _i < arguments.length; _i++) {
values[_i - 1] = arguments[_i];
}
console.error.apply(console, __spread(values)); // error from here
}
Вот что я вижу в отладчике, когда раскрываю ошибку
ОШИБКА core.js: 15724 Ошибка: невыполненная (в обещании): TypeError: Невозможно прочитать свойство 'data' из null core.js: 15724 Сообщение: "Uncaught (в обещании): TypeError: Невозможно прочитать свойство 'data' из null \ nTypeError: Невозможно прочитать свойство 'data' из null \ n в AuthGuard.canActivate (http://localhost:4200/main.js:147:37)\n в http://localhost:4200/vendor.js:73690:55\n в Observable._subscribe (http://localhost:4200/vendor.js:111951:21)\n в Observable._trySubscribe (http://localhost:4200/vendor.js:110290:25)\n в Observable.subscribe (http://localhost:4200/vendor.js:110276:22)\n вTakeOperator.call (http://localhost:4200/vendor.js:118625:23)\n в Observable.subscribe (http://localhost:4200/vendor.js:110271:22)\n в http://localhost:4200/vendor.js:121541:31\n в subscribeToResult (http://localhost:4200/vendor.js:121718:84)\n в MergeMapSubscriber._innerSub (http://localhost:4200/vendor.js:116475:90)" обещание:ZoneAwarePromise { zone_symbol__state: 0, __zone_symbol__value: TypeError: Невозможно прочитать свойство 'data' из null \ n…} rejection: TypeError: Невозможно прочитать свойство 'data' из нулевого стека: "Ошибка: Uncaught (в обещании): TypeError:Не удается прочитать свойство 'data' из null \ nTypeError: Невозможно прочитать свойство'data' of null \ n в AuthGuard.canActivate (http://localhost:4200/main.js:147:37)\n в http://localhost:4200/vendor.js:73690:55\n в Observable._subscribe (http://localhost:4200/vendor.js:111951:21)\n в Observable._trySubscribe (http://localhost:4200/vendor.js:110290:25)\n в Observable.подписаться (http://localhost:4200/vendor.js:110276:22)\n на TakeOperator.call (http://localhost:4200/vendor.js:118625:23)\n на Observable.subscribe (http://localhost:4200/vendor.js:110271:22)\n на http://localhost:4200/vendor.js:121541:31\n на subscribeToResult (http://localhost:4200/vendor.js:121718:84)\n на MergeMapSubscriber._innerSub(http://localhost:4200/vendor.js:116475:90)\n at resolPromise (http://localhost:4200/polyfills.js:3189:31)\n при resolPromise (http://localhost:4200/polyfills.js:3146:17)\n в http://localhost:4200/polyfills.js:3250:17\n в ZoneDelegate.push ../ node_modules ... задача: ZoneTask {_zone: Zone, runCount: 0, _zoneDelegates: null,…} зона: Zone {_parent: Zone, _name: "angular", _properties: Object, ...} __proto : Object {constructor:, name: "Error", message: "",…}
Я знаю, что в этом методе в auth.guard.ts в 1-й строке я вижу, что
" firstChild "равен нулю
canActivate(next: ActivatedRouteSnapshot): boolean {
const roles = next.firstChild.data.roles as Array<string>;
if (roles) {
const match = this.authService.roleMatch(roles);
if (match) {
return true;
} else {
this.router.navigate(['members']);
this.alertify.error('You are not authorized to access this area');
}
}
if (this.authService.loggedIn()) {
return true;
}
this.alertify.error('You shall not pass!!!');
this.router.navigate(['/home']);
return false;
}