Ionic 3 - Свойство «data» не существует для типа «{}» - при попытке запуска на устройстве - PullRequest
0 голосов
/ 28 января 2019

Я получаю эту ошибку при попытке запустить приложение Ionic 3 на устройстве Android.В браузере работает правильно, но я думаю, что есть дополнительный уровень проверки при запуске / развертывании на устройстве.

Вот проблемный код:

getHomephones(auth_token) {

    return new Promise(resolve => {
      this.apiProvider.getRemoteHomephones(auth_token).then(result => {
          this.createOrUpdateHomephones(result.data).then(response => {
            resolve(response);
          });
        });
    });
  }

, который вызывает APIпровайдер и получает массив телефонов взамен (или, по крайней мере, это цель):

getRemoteHomephones(auth_token) {
    return new Promise(resolve => {
      this.httpClient.get(this.apiUrl + "remote_homephones", {
        headers:{"X-USER-AUTH-TOKEN": auth_token}
      }).subscribe(response => {
        resolve(response);
      }
    });
  }

Я предполагаю, что проблема лежит в объявлении типа на стороне API, но я, кажется, ненайти правильный способ объявить это.

Любая помощь или подсказка очень ценится.

1 Ответ

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

Советы, которые помогут вам сейчас и в будущем.У меня нет подробных сведений о том, будет ли этот код развернут в производственном процессе, но здесь мы идем:

  • getRemoteHomephones также должен обрабатывать ошибку в случае сбоя вызова HTTP.(отклонить обещание, поймать ошибку в вызывающем абоненте)
  • Angular loves Typescript , поэтому вам также следует начать его использовать.Решение не будет работать, если есть ошибки при наборе текста, поэтому вы избежите многих головных болей.(В частности, здесь вы должны определить интерфейс, который будет отображаться в вашем ответе API как

    getRemoteHomephones (auth_token): PhoneNumber []) ​​

  • Перед передачей результат до createOrUpdateHomephones как result.data , добавьте дополнительную проверку, чтобы убедиться, что объект существует, и свойство data доступно.

Удачи!

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