TypeError: undefined не является объектом (оценивая parentOutlet.peekState ') - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть многостраничное приложение angular-nativescript (с сайдрейнером и выходом страницы-маршрутизатора).Когда я впервые запускаю приложение, я могу нормально перемещаться между страницами на боковой панели, но через несколько минут (например, 10) при попытке перехода с одной страницы на другую приложение вылетает с таким сообщением:

Ошибка JavaScript:
Файл: ///app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js: 826: 78:Ошибка JS: Uncaught (в обещании): TypeError: undefined не является объектом (оценка 'parentOutlet.peekState')upsertModalOutlet @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 506: 41Файл: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 128: 44forEach @ [нативный код]pushStateInternal @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 111: 54PushState @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 85: 31PushState @ файла: ///app/tns_modules/nativescript-angular/router/ns-platform-location.js: 49: 40PushState @ файл: ///app/tns_modules/@angular/common/bundles/common.umd.js: 511: 45перейти @ файлов: ///app/tns_modules/@angular/common/bundles/common.umd.js: 286: 45setBrowserUrl @ файл: ///app/tns_modules/@angular/router/bundles/router.umd.js: 4007: 33Файл: ///app/tns_modules/@angular/router/bundles/router.umd.js: 3960: 40Файл: /// приложение / tns_m <\ Mb \ M ^ @ \ M- &>* стек вызовов JavaScript:(0 UIApplicationMain @ [собственный код]1 начало @ файл: ///app/tns_modules/tns-core-modules/application/application.js: 272: 262 запустите @ file: ///app/tns_modules/tns-core-modules/application/application.js: 300: 103 bootstrapNativeScriptApp @ file: ///app/tns_modules/nativescript-angular/platform-common.js: 185: 264 bootstrapApp @ file: ///app/tns_modules/nativescript-angular/platform-common.js: 103: 385 bootstrapModule @ file: ///app/tns_modules/nativescript-angular/platform-common.js: 87: 266 анонимный @ файл: ///app/main.js: 7: 577 оценить @ [нативный код]8 модульОценка @: 1: 119 обещаниереакция @: 1: 11)* Завершение работы приложения из-за необработанного исключения. «NativeScript обнаружил фатальную ошибку: Ошибка: Uncaught (в обещании): TypeError: undefined не является объектом (оценивается parentOutlet.peekState»)upsertModalOutlet @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 506: 41Файл: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 128: 44forEach @ [нативный код]pushStateInternal @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 111: 54PushState @ файла: ///app/tns_modules/nativescript-angular/router/ns-location-strategy.js: 85: 31PushState @ файла: ///app/tns_modules/nativescript-angular/router/ns-platform-location.js: 49: 40PushState @ файл: ///app/tns_modules/@angular/common/bundles/common.umd.js: 511: 45go @ file: ///app/tns_modules/@angular/common/bundles/common.umd.js: 286: 45 setBrowserUrl @ file: ///app/tns_modules/@angular/router/bundles/router.umd.js: 4007: 33Файл: ///app/tns_modules/@angular/router/bundles/router.umd.js: 3960: 40

Это довольно надежно воспроизводимо, но мне приходится ждать как 10 минут каждый раз

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

У меня была такая же ошибка, и я обнаружил, что она была вызвана, потому что я использовал это в main.ts файле:

platformNativeScriptDynamic({createFrameOnBootstrap: true}).bootstrapModule(AppModule);

Изменив это на:

platformNativeScriptDynamic({createFrameOnBootstrap: false}).bootstrapModule(AppModule);

или

platformNativeScriptDynamic().bootstrapModule(AppModule);

решил проблему.

Эта ошибка особенно появилась при попытке загрузить модальное устройство, которое использует корневое представление для показа модального значения.

Согласно документации NativeScript,вы должны использовать createFrameOnBootstrap в тех случаях, когда ваше приложение не использует page-router-outlet, так как без него вы не получите значения по умолчанию Page и Frame, что означает, что вы не сможете внедрить их в свои компоненты или показатьActionBar.

У моего приложения page-router-outlet, поэтому настройка createFrameOnBootstrap: false решила эту проблему.

0 голосов
/ 02 января 2019

Похоже, проблема была связана с тем, как я обрабатывал маршрутизацию между угловыми версиями.В угловом 4 я использовал <router-outlet> и имел tkMainContent в <StackLayout>, который его окружал.Когда я переключился на <page-router-outlet> в угловых 6, мне нужно было переместить tkMainContent внутрь <page-router-outlet>

...