没有改变,突然收到Ionic TypeError co.event是未定义的

我没有太多的信息,因为这是我曾经遇到的最奇怪的问题。

我正在写Ionic 2的应用程序。昨天晚上我睡觉了,一切都很好。 我今天早上起床继续工作,即使欢迎页面加载,当您滚动到主页时,我得到一个错误,co.event是未定义的。

这是一个壮观的无用的错误消息的截图(为什么我不能从Ionic的这个错误屏幕上复制粘贴错误消息?这么愚蠢)。 在我的代码库中search“co.event”会返回0个结果。

错误信息

我没有改变任何地方的一行代码。 我什至不明白这是如何可能的,更不用说做什么来解决它。

我从我正在工作的分支转到Master分支,看看是否还好。 不,这个错误有一个完全不同的错误,尽pipe也没有改变。

在这里输入图像说明

我可以通过进入src/app/app.component.ts并注释掉this.initializeApp();来解决master分支上的错误this.initializeApp(); 这使一切工作,但似乎是一个非常糟糕的主意,因为这听起来像是一个非常关键的行列。

 constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen) { // this.initializeApp(); // used for an example of ngFor and navigation this.pages = [ { title: 'Welcome', component: WelcomePage }, { title: 'Home', component: HomePage }, { title: 'List', component: ListPage } ]; } 

任何帮助非常感谢。

编辑更新:

这是我的initializeApp

 initializeApp() { this.platform.ready().then(() => { // Okay, so the platform is ready and our plugins are available. // Here you can do any higher level native things you might need. this.statusBar.styleDefault(); this.splashScreen.hide(); // Enable to debug issues. // window["plugins"].OneSignal.setLogLevel({logLevel: 4, visualLevel: 4}); var notificationOpenedCallback = function(jsonData) { console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData)); }; // window["plugins"].OneSignal // .startInit("yyyyyyyyy", "yyyyyyyyy") // .handleNotificationOpened(notificationOpenedCallback) // .endInit(); }); } 

而这里是第三个不同的错误(尽pipe字面上没有改变什么?),当我的Android手机上运行开发分支,而不是在ionic serve 。 Master分支在Android手机上正常工作。

另一个错误

编辑2:主页代码

 <ion-header> <ion-navbar> <button ion-button menuToggle> <ion-icon name="menu"></ion-icon> </button> <ion-title>Home</ion-title> </ion-navbar> </ion-header> <ion-content padding> <h1 class="header">Nuevo Niño</h1> <hr /> <div ng-app ng-init="qty=1;cost=2"> <button ion-button (click)="setData()">SetData</button> <button ion-button (click)="getData()">GetData</button> <br /> <b>Name:</b> {{name}} <hr /> <b>Invoice:</b> <div> Quantity: <input type="number" min="0" ng-model="HomePage.qty"> </div> <div> Costs: <input type="number" min="0" ng-model="cost"> </div> <div> <b>Total:</b> {{qty * cost | currency}} </div> </div> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed quis ipsum id libero auctor viverra eget vitae ipsum. Aenean ultrices diam odio, ac vulputate felis ultrices vel. Donec a mauris tristique, feugiat nunc nec, lacinia augue. </p> <ion-list> <ion-item> <ion-label>Expected Birth Date</ion-label> <ion-datetime displayFormat="MMM DD YYYY" [(ngModel)]="event.month"></ion-datetime> </ion-item> <ion-item> <p><b>Baby arrives {{ days_until_birth }}!</b></p> </ion-item> </ion-list> <ion-list> <ion-list-header> Recent Notifications </ion-list-header> <ion-item> <ion-avatar item-start> <img src="assets/img/avatar-ben.png"> </ion-avatar> <h2>Doctor Smith</h2> <h3>24th January</h3> <p>3 month check-up</p> </ion-item> <ion-item> <ion-avatar item-start> <img src="assets/img/avatar-han.png"> </ion-avatar> <h2>Han</h2> <h3>Look, kid...</h3> <p>I've got enough on my plate as it is, and I...</p> </ion-item> <ion-item> <ion-avatar item-start> <img src="assets/img/avatar-leia.png"> </ion-avatar> <h2>Leia</h2> <h3>I can handle myself</h3> <p>You will remove these restraints and leave...</p> </ion-item> </ion-list> <!-- <button ion-button secondary menuToggle>Toggle Menu</button> --> </ion-content> 

和.ts文件

 import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import moment from 'moment'; import { Storage } from '@ionic/storage'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { name: string = 'John'; // public days_until_birth = moment('20171119', 'YYYYMMDD').fromNow(); // let data = moment() // let data = moment().format('YYYYMMDD'); // let time = moment().format('HHmmss'); // console.log('today is: ', data + ' and time: ', time); constructor(public navCtrl: NavController, public storage: Storage) { } ionViewDidLoad() { this.storage.set('name', 'James'); } setData(){ this.storage.set('name', 'Brett'); } getData(){ this.storage.get('name').then((data) => { console.log(data); }); } } 

好吧,通过你的代码,我们可以得到以下结果:

  • 对于第二个错误,可能是因为你试图通过你的window对象来访问插件,并且插件不存在,因为没有可用的cordova。

  • 我使用离子本土来强制吸收你,因为他们完成了所有的封装工作,所以我们可以更好,更简单地使用它们。

  • 如果可能的话,在检查平台是否有cordova,iOS或Android之后,如果可能的话总是调用你的插件,这样在不对仿真器进行testing时不会中断你的应用程序(在生产/testing中你可以取出这个检查,但是对于生产来说, ),所以尝试在if(this.platform.is('cordova')){}使用你的代码。

  • 你家里的co.event错误只是因为你没有在你的HomePage中声明的eventvariables,所以它不能识别eventevent.month 。 所以我sugest检查所有的主页绑定和.tsvariables和函数。

希望这可以帮助。