Angular 2 - ИСКЛЮЧЕНИЕ: TypeError: невозможно прочитать свойство isSkipSelf из null browser_adapter.ts
все! После обновления с бета-версии 12 до RC1 я столкнулся с этой проблемой - и я не знаю, что происходит. У кого-нибудь есть решение?
ИСКЛЮЧЕНИЕ: TypeError: Невозможно прочитать свойство isSkipSelf из null browser_adapter.ts: 88 ИСКЛЮЧЕНИЕ: Ошибка: нечистота (в обещании): TypeError: Не удается прочитать свойство isSkipSelf из null browser_adapter.ts: 78 ИСКЛЮЧЕНИЕ: Ошибка: нечистота (в обещании): TypeError: невозможно прочитать свойство isSkipSelf из nullBrowserDomAdapter.logError @browser_adapter.ts: 78BrowserDomAdapter.logGroup @browser_adapter.ts: 89ExceptionHandler.call @exception_handler.ts: 53 ( анонимная функция) @application_ref.ts: 304schedulerFn @async.ts: 131SafeSubscriber.__ tryOrUnsub @Subscriber.ts: 240SafeSubscriber.next @Subscriber.ts: 192Subscriber._next @Subscriber.ts: 133Subscriber.next @Subscriber.ts: 93Subject._finalNext @Subject.ts: 154Subject._next @Subject.ts: 144Subject.next @Subject.ts: 90EventEmitter.emit @async.ts: 117onError @ng_zone.ts: 138onHandleError @ng_zone_impl.ts: 90ZoneDelegate.handleError @zone.js: 327Zone. runGuarded @zone.js: 233_loop_1 @zone.js: 487drainMicroTaskQueue @zone.js: 494ZoneTask.invoke @zone.js: 426 browser_adapter.ts: 78 STACKTRACE: BrowserDomAdapter.logError @browser_adapter.ts: 78ExceptionHandler.call @exception_handler.ts: 56 (анонимная функция) @application_ref.ts: 304schedulerFn @async.ts: 131SafeSubscriber.__ tryOrUnsub @Subscriber.ts: 240SafeSubscriber.next @Subscriber.ts: 192Subscriber._next @Subscriber.ts: 133Subscriber.next @Subscriber.ts: 93Subject._finalNext @Subject.ts: 154Subject._next @Subject.ts: 144Subject.next @Subject.ts: 90EventEmitter.emit @async.ts: 117onError @ng_zone.ts: 138onHandleError @ng_zone_impl.ts: 90ZoneDelegate.handleError @zone.js: 327Zone.runGuarded @zone.js: 233_loop_1 @zone.js: 487drainMicroTaskQueue @zone.js: 494ZoneTask.invoke @zone.js: 426 browser_adapter.ts: 78 Ошибка: нечистота (в обещании): TypeError: Невозможно прочитать свойство isSkipSelf из null в resolPromise (zone.js: 538) в PromiseCompleter.reject(zone.js: 515) на eval (application_ref.ts: 340) в ZoneDelegate.invoke(zone.js: 323) в Object.onInvoke(ng_zone_impl.ts: 67) в ZoneDelegate.invoke(zone.js: 322) в Zone.run(zone.js: 216) at zone.js: 571 в ZoneDelegate.invokeTask(zone.js: 356) в Object.onInvokeTask(ng_zone_impl.ts: 56) BrowserDomAdapter.logError @browser_adapter.ts: 78ExceptionHandler.call @exception_handler.ts: 57 (анонимная функция) @application_ref.ts: 304schedulerFn @async.ts: 131SafeSubscriber.__ tryOrUnsub @Subscriber.ts: 240SafeSubscriber.next @Subscriber.ts: 192Subscriber._next @Subscriber.ts: 133Subscriber.next @Subscriber.ts: 93Subject._finalNext @Subject.ts: 154Subject._next @Subject.ts: 144Subject.next @Subject.ts: 90EventEmitter.emit @async.ts: 117onError @ng_zone.ts: 138onHandleError @ng_zone_impl.ts: 90ZoneDelegate.handleError @zone.js: 327Zone.runGuarded @zone.js: 233_loop_1 @zone.js: 487drainMicroTaskQueue @zone.js: 494ZoneTask.invoke @zone.js: 426 zone.js: 461 Unhandled Promise rejection: Невозможно прочитать свойство isSkipSelf, равное null; Зона: angular; Задача: Promise.then; Значение: TypeError: невозможно прочитать свойство isSkipSelf из null (...) consoleError @zone.js: 461_loop_1 @zone.js: 490drainMicroTaskQueue @zone.js: 494ZoneTask.invoke @zone.js: 426 zone.js: 463 Ошибка: нечистота (в обещании): TypeError: невозможно прочитать свойство isSkipSelf из null (...)
Ответы
Ответ 1
Похож на эту проблему https://github.com/angular/angular/issues/8519
- Возможно, вам нужно обновить список параметров функции
transform()
для канала
- вы можете пропустить
emitDecoratorMetadata: true
в своей конфигурации
- имеют циклическую зависимость, которая не разрешается с помощью
forwardRef()
- некоторый импорт, который не разрешает
- отсутствует
@Injectable()
в сервисе
- ...
Ответ 2
Эта проблема также сообщается в: https://github.com/angular/angular/issues/8704
Если у вас есть следующая ситуация:
компонент A зависит от службы B, которая зависит от службы C,
решение состоит в том, чтобы добавить @Injectable() в службу B, а также добавить сервисы B и C в список поставщиков компонента A.
(Альтернативное решение заключается в том, чтобы добавить forwardRef к сервису C в конструкторе службы B, используя @Inject (forwardRef (() = > ServiceC), а также добавить сервисы B и C в список поставщиков компонента A)
Ответ 3
Для меня, вынимая localStorage от поставщиков: от провайдеров: [HTTP_PROVIDERS, localStorage]
в провайдеров: [HTTP_PROVIDERS]
исправлена проблема. Я почти уверен, что я видел, как он работает с ошибкой localStorage, возможно, это был мираж.
Просто убедитесь, что вы не путаете директивы: с поставщиками:
Ответ 4
Не уверен, почему моя ошибка исчезла, но после того, как я удалил аргументы из моих конструкторов сервисов и бросил импорт напрямую, как показано ниже, он работал
import {blindMen} from '../elephant'
...
export class ElephantComponet{
blindMen:any;
constructor(){
this.blindMen = blindMen;
}
}