Ionic 2 rc0 whitescreen(ConnectionBackend没有提供商!)

时间:2016-10-05 10:32:38

标签: ionic2

我通过复制旧版beta11项目的文件开始了一个新的离子2 rc0应用程序。我按照

中的描述做了必要的步骤

将项目复制到新项目ionic 2 rc0 changelog

现在最终在我运行

后不再出现编译器错误
ionic run android -c

我刚在Android手机上获得 whitescreen

Chrome调试正在记录我

  

未捕获错误:没有提供商!

当我跑步时

ionic serve -c

firefox 会记录我

  

未处理承诺拒绝:没有ConnectionBackend的提供商! ;   区域:;任务:Promise.then;值:对象{...

app.module.ts 看起来像:

import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { Storage } from '@ionic/storage'; // special thing
import { Http } from '@angular/http';#

// other imports ....

@NgModule({
  declarations: [
    MyApp,
    // PAGES
    // MODALS
    // CUSTOM COMPONENTS
    // DIRECTIVES
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    // PAGES
    // MODALS
  ],
  providers: [
    Storage,
    Http,
    // SERVICES/PROVIDERS
  ]
})
export class AppModule {}

我猜测某个地方的提供商有问题,但我无法找到解决方案......

系统: ubuntu 16.04 / node v6.7.0 / npm v3.10.3

编辑:

我用

开始了一个新的sidemenu项目
ionic start debugProject sidemenu --v2

我这样做是为了通过顺序添加原始Project的提供程序来调试提供程序。看来,当我在 app.components.ts

的构造函数中注入名为" Config" 的第一个提供程序时
import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar } from 'ionic-native';

import { TabsPage } from '../pages/tabs/tabs';

// PROVIDERS -> providers
import { Config } from '../providers/config/config';


@Component({
  template: `<ion-nav [root]="rootPage"></ion-nav>`
})
export class MyApp {

  rootPage = TabsPage;

  constructor(
    platform  : Platform,
    config    : Config    <-------------(HERE !!! )
  ) { .....

我像以前一样得到错误消息:

  

未处理承诺拒绝:没有ConnectionBackend的提供商! ;   区域:;任务:Promise.then;值:对象{...

config.ts

import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

// providers
import { Http } from '@angular/http';
//import { DB } from '../db/db';


@Injectable()
export class Config {

  public data : any;

  constructor(
    public http : Http,
    //public db   : DB
  ){
    this.data = {};
  }

  loadDefault() {
    this.data = {
    ..........................
    // DATA OBJECT DEFINITIONS
    ...........................
    };
    return Promise.resolve("default settings applied");
  }

  loadSettingsFromDB(){
    return Promise.resolve("no local settings from db for now");
  }

  // TODO: send settings to server
  saveSettingsToDB(settings){
    return Promise.resolve("cant save settings for now");
  }

  handleError(err) : void {
    // error stacktrace gets returned on development mode
    try{
      err = err.json();
    }catch(e){}
    var msg = err.message || "LOADING ERROR";
    if(err.error){
      msg += err.error;
      //Toast.showLongBottom(msg).subscribe();
    }else{
      //Toast.showShortBottom(msg).subscribe();
    }
    console.log("ERROR in config.ts");
    console.log(msg);
    console.log(err);
  }

}

任何想法?如果没有,有关在github上打开新问题的经验吗?

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。似乎我不能/不应该在 app.modules.ts 中的providers数组中使用Http模块(在beta11中这不是问题)。我的Config模块依赖于Http,因此在构造Config之后,应用程序错误(没有ConnectionBackend的提供程序)被触发......