Вызов asyn c метода из экземпляра Object дает ошибку: TypeError: Object (...) не является функцией - PullRequest
0 голосов
/ 26 февраля 2020

В настоящее время я занимаюсь разработкой приложения для образовательных целей и сталкиваюсь с проблемой, которая, вероятно, тривиальна, но не может обойти и решить ее.

Поэтому в основном я пытаюсь получить некоторые данные из внешнего API ( используя Ax ios для этого). Я разделил свой код на модули, которые я экспортирую в файл index. js, и из этого я создаю новый объект Object и вызываю свой асин c метод getResults(), который в свою очередь должен дать мне данные из API. С этого момента ошибка get

TypeError: Object (...) не является функцией.

Вот пример кода:

Модуль Поиск. js:

export default class Search {
  constructor(query, num) {
    this.query = query;
    this.num = num;
  }

  async getResults() {
    const url = 'API_URL';
    const key = 'API_KEY';
    try {
      const res = await axios(`${url}?query=${this.query}&number=${this.num}&apiKey=${key}`);
      this.result = res.data.results;
      console.log(this.result);
    } catch (error) {
      console.log(error);
    }
  }
}

А вот индекс. js file:

import Search from "./models/Search";
const s = new Search('cheese', 2);
s.getResults()

И, наконец, ошибка в консоли:

TypeError: Object(...) is not a function
    at Search._callee$ (Search.js:42)
    at tryCatch (runtime.js:65)
    at Generator.invoke [as _invoke] (runtime.js:303)
    at Generator.prototype.<computed> [as next] (runtime.js:117)
    at asyncGeneratorStep (Search.js:5)
    at _next (Search.js:7)
    at eval (Search.js:7)
    at new Promise (<anonymous>)
    at Search.eval (Search.js:7)
    at Search.getResults (Search.js:65)

Возможно, я здесь что-то делаю не так, любая помощь и понимание будут оценены. Спасибо.

1 Ответ

1 голос
/ 26 февраля 2020
await axios(`${url}?query=${this.query}&number=${this.num}&apiKey=${key}`);

Это ошибка создания строки,

axios - это объект, который вы пытаетесь использовать как function

Вы, вероятно, будете sh использовать get/post метод, предоставляемый ax ios для вызова вашей конечной точки

await axios.get(`${url}?query=${this.query}&number=${this.num}&apiKey=${key}`);

Вы можете посмотреть, как вы хотите использовать axios https://github.com/axios/axios

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