Свойство Ionic 3 «data» не существует для типа «ArrayBuffer» - PullRequest
0 голосов
/ 07 июня 2018

У меня действительно странная проблема с Ionic.На каждой новой сборке / serve / lab возникает следующая ошибка:

typescript: src/providers/city/city.ts, line: 17 
            Property 'data' does not exist on type 'ArrayBuffer'.

Вот проблемный файл:

import { Injectable } from '@angular/core';
import {JApiProvider} from "../j-api/j-api";
import {CityModel} from "../../models/city.model";
import "rxjs-compat/add/operator/map";

@Injectable()
export class CityProvider {

  constructor(private api: JApiProvider) {
  }

  search( name: string ) {
    console.log( response.data );
    return this.api.get( 'city', { name: name } ).map(
      response => {
        return response.data.map(
          cityData => {
            return new CityModel(
              cityData.id,
              cityData.name,
              cityData.province,
              cityData!.lat,
              cityData!.lng
            );
          }
        );
      }
    );
  }
}

Странно то, что если я редактирую файл (давайтескажем просто добавьте console.log () или удалите), нажмите «сохранить» (чтобы он мог перекомпилироваться), проблема исчезнет.Поэтому, когда возникает проблема, я делаю небольшое изменение, сохраняю, и тогда это работает.У вас есть идеи, в чем может быть проблема?

Информация о моей настройке:

cli packages: (/usr/lib/node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 7.1.0 

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 7.0.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Node : v9.2.0
    npm  : 5.5.1 
    OS   : Linux 4.10

Environment Variables:

    ANDROID_HOME : not set

Misc:

    backend : pro

Вот мой файл package.json:

{
  "name": "JApp",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "lint": "ionic-app-scripts lint",
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve"
  },
  "dependencies": {
    "@angular/animations": "5.2.9",
    "@angular/common": "5.2.9",
    "@angular/compiler": "5.2.9",
    "@angular/compiler-cli": "5.2.9",
    "@angular/core": "5.2.9",
    "@angular/forms": "5.2.9",
    "@angular/http": "5.2.9",
    "@angular/platform-browser": "5.2.9",
    "@angular/platform-browser-dynamic": "5.2.9",
    "@auth0/angular-jwt": "^2.0.0",
    "@ionic-native/camera": "^4.7.0",
    "@ionic-native/core": "^4.7.0",
    "@ionic-native/file": "^4.7.0",
    "@ionic-native/file-transfer": "^4.7.0",
    "@ionic-native/google-maps": "^4.8.2",
    "@ionic-native/native-storage": "^4.7.0",
    "@ionic-native/splash-screen": "4.6.0",
    "@ionic-native/status-bar": "4.6.0",
    "@ionic-native/wheel-selector": "^4.7.0",
    "@ionic/storage": "2.1.3",
    "angular-jwt": "^0.1.9",
    "cordova-android": "7.0.0",
    "cordova-plugin-camera": "^4.0.3",
    "cordova-plugin-device": "^2.0.2",
    "cordova-plugin-file": "^6.0.1",
    "cordova-plugin-file-transfer": "^1.7.1",
    "cordova-plugin-googlemaps": "^2.3.6",
    "cordova-plugin-ionic-keyboard": "^2.0.5",
    "cordova-plugin-ionic-webview": "^1.2.1",
    "cordova-plugin-splashscreen": "^5.0.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "cordova-sqlite-storage": "^2.3.1",
    "cordova-wheel-selector-plugin": "^1.1.1",
    "flag-icon-css": "^3.0.0",
    "ionic-angular": "3.9.2",
    "ionicons": "3.0.0",
    "minimist": "^1.2.0",
    "ng2-rx-componentdestroyed": "^3.0.0",
    "rxjs": "^6.1.0",
    "rxjs-compat": "^6.1.0",
    "sw-toolbox": "3.6.0",
    "xml2js": "^0.4.19",
    "zone.js": "0.8.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "3.1.8",
    "typescript": "~2.6.2"
  },
  "description": "An Ionic project",
  "cordova": {
    "plugins": {
      "cordova-sqlite-storage": {},
      "cordova-plugin-whitelist": {},
      "cordova-plugin-device": {},
      "cordova-plugin-splashscreen": {},
      "cordova-plugin-ionic-webview": {},
      "cordova-plugin-ionic-keyboard": {},
      "cordova-plugin-camera": {},
      "cordova-plugin-file": {},
      "cordova-plugin-file-transfer": {},
      "cordova-wheel-selector-plugin": {},
      "cordova-plugin-googlemaps": {
        "API_KEY_FOR_ANDROID": "removed",
        "API_KEY_FOR_IOS": "removed",
        "PLAY_SERVICES_VERSION": "15.0.1",
        "ANDROID_SUPPORT_V4_VERSION": "26.1.0"
      }
    },
    "platforms": [
      "android"
    ]
  }
}

ОС:Ubuntu 17.04 zetsy

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

добавить любой для ответ объявить

(response: any) => 
0 голосов
/ 07 июня 2018

Может быть, вы можете исправить это, набрав response в компоненте с помощью any

search( name: string ) {
return this.api.get( 'city', { name: name } ).map(
  (response: any) => {
    return response.data.map(
      cityData => {
        return new CityModel(
          cityData.id,
          cityData.name,
          cityData.province,
          cityData!.lat,
          cityData!.lng
        );
      }
    );
  }
);

}

Это также будет работать, если вы измените api.get(), набрав return с чем-то вроде Observable<SomeType> и построив данные ответа с этим SomeType, который имеет свойство data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...