Мое приложение nativescript не подключается к моей базе данных на сервере json - PullRequest
0 голосов
/ 23 января 2019

Я создаю приложение nativescript с angular, я использую сервер json.У меня запущен сервер json, и когда я запускаю tns run android на моем компьютере, я получаю, что он успешно синхронизирован, но мое приложение выглядит пустым.

Я могу получить доступ к своей базе данных сервера json в браузере телефона

все мои cabins.component.ts

    import { Component, OnInit, Inject } from '@angular/core';
import { Cabin } from '../shared/cabin';
import { CabinService } from '../services/cabin.service';

@Component({
  selector: 'app-cabins',
  moduleId: module.id,
  templateUrl: './cabins.component.html'
})

export class CabinsComponent  implements OnInit {
  cabins: Cabin[];

  errMess: string;

  constructor(private cabinService: CabinService,
    @Inject('BaseURL') private BaseURL) {
  }

  ngOnInit() {
    this.cabinService.getCabins()
      .subscribe(cabins => this.cabins = cabins,
        errmess => this.errMess = <any>errmess);
  }

}

все мои cab.service.ts

import { Injectable } from '@angular/core';
import { Cabin } from '../shared/cabin';
import { Observable } from 'rxjs';
import { Http, Response } from '@angular/http';
import { HttpClient, HttpHeaders } from "@angular/common/http";
import { baseURL } from '../shared/baseurl';
import { ProcessHTTPMsgService } from './process-httpmsg.service';
import { map } from "rxjs/operators";
import { catchError } from "rxjs/operators";

@Injectable()
export class CabinService {

  cabins: any[];

  constructor(private http: HttpClient,
              private processHTTPMsgService: ProcessHTTPMsgService) { }

  getCabins(): Observable<Cabin[]> {
    return this.http.get(baseURL + 'cabins')
                    .pipe(map(res => { return this.processHTTPMsgService.extractData(res); }),
                    catchError(error => { return this.processHTTPMsgService.handleError(error); }));
  }

  getCabin(id: number): Observable<Cabin> {
    return  this.http.get(baseURL + 'cabins/'+ id)
                    .pipe(map(res => { return this.processHTTPMsgService.extractData(res); }),
                    catchError(error => { return this.processHTTPMsgService.handleError(error); }));
  }

  getFeaturedCabin(): Observable<Cabin> {
    return this.http.get(baseURL + 'cabins?featured=true')
                    .pipe(map(res => { return this.processHTTPMsgService.extractData(res)[0]; }),
                    catchError(error => { return this.processHTTPMsgService.handleError(error); }));
  }

}

Мой app.module.ts

    imports: [
        NativeScriptHttpClientModule,
        NativeScriptModule,
        AppRoutingModule
    ],
providers: [
    {provide: 'BaseURL', useValue: baseURL},
    CabinService,
    ProcessHTTPMsgService
]

Я получаю это сообщение в консоли

× Переменная среды ANDROID_HOME не задана или она указывает на несуществующий каталог.Вы не сможете выполнять какие-либо операции, связанные со сборкой для Android.Чтобы иметь возможность выполнять операции, связанные со сборкой Android, установите переменную ANDROID_HOME так, чтобы она указывала на корень установочного каталога Android SDK.

× ВНИМАНИЕ: adb из Android SDK не установлен или не настроендолжным образом.Для операций, связанных с Android, интерфейс командной строки NativeScript будет использовать встроенную версию adb.Чтобы избежать возможных проблем с собственным эмулятором Android, Genymotion или подключенными устройствами Android, убедитесь, что вы установили последнюю версию Android SDK и ее зависимости, как описано в http://developer.android.com/sdk/index.html#Requirements

× ВНИМАНИЕ: Android SDK не установлен илине настроен правильно.Вы не сможете запускать свои приложения в нативном эмуляторе.Чтобы иметь возможность запускать приложения в собственном эмуляторе Android, убедитесь, что вы установили последний Android SDK и его зависимости, как описано в http://developer.android.com/sdk/index.html#Requirements

× Не удается найти совместимый Android SDK для компиляции.Чтобы иметь возможность собирать для Android, установите Android SDK 28 или более поздней версии.Запустите $ sdkmanager для управления версиями Android SDK.

× В вашей системе должны быть установлены инструменты сборки Android SDK.Вы можете установить любую версию в следующем диапазоне: '> = 23 <= 28'.Запустите <code>$ sdkmanager из командной строки, чтобы установить требуемый Android Build Tools.Если они у вас уже установлены, убедитесь, что переменная окружения ANDROID_HOME установлена ​​правильно.

× Ошибка при выполнении команды 'javac'.Убедитесь, что вы установили Java Development Kit (JDK) и задали переменную среды JAVA_HOME.Вы не сможете создавать свои проекты для Android.Чтобы иметь возможность сборки для Android, убедитесь, что вы установили Java Development Kit (JDK) и настроили его в соответствии с системными требованиями, как описано в http://docs.nativescript.org/setup/ns-cli-setup/ns-setup-win.html#system-requirements

× ВНИМАНИЕ: Java Development Kit (JDK)не установлен или неправильно настроен.Вы не сможете работать с Android SDK и не сможете выполнять некоторые операции, связанные с Android.Чтобы убедиться, что вы можете разрабатывать и тестировать свои приложения для Android, убедитесь, что вы установили JDK, как описано в http://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html (для JDK 8).

1 Ответ

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

Вы должны использовать HttpClient вместо «Http». Примерно так:

AppModule:

@NgModule({
...
imports: [
NativeScriptHttpModule
]
})
export class AppModule {}

и затем к вашим услугам:

constructor(httpClient: HttpClient){}

Вам также следует инициализировать cabins пустым массивом. Поскольку он начинается с undefined, ваш ListView может выдавать ошибки при попытке загрузки данных.

...