Почему ax ios .get становится нулевым, а URL-адрес работает нормально при посещении браузера? - PullRequest
2 голосов
/ 19 апреля 2020
import axios from 'axios';

const URL = 'http://localhost:5000/api/posts/';

class PostService {
    static getPosts() {
        return new Promise( (resolve, reject) => {
            try {
                const res = axios.get(URL);
                const data = res.data;
                resolve(
                    data.map(post => ({
                        ...post,
                        createdAt: new Date(post.createdAt)
                    }))
                )
            }
            catch (e) {
                reject(e);
            }
        });
    }

Во время работы возникает ошибка «Ошибка типа: невозможно прочитать свойство« карта »неопределенного». Оказывается, переменная data равна нулю. Однако, когда я открываю URL в браузере, данные отображаются совершенно так, как показано ниже: снимок экрана с данными

Может кто-нибудь сказать мне, почему? Thx ~

1 Ответ

2 голосов
/ 19 апреля 2020

Вы не ожидаете разрешения вызова функции .get, прежде чем ссылаться на него. В асинхронной функции c вы могли бы ожидать ее, но в обещании вы должны поместить асинхронные задачи в правку .then ()

: возможно, это неясно,

try:

import axios from 'axios';

const URL = 'http://localhost:5000/api/posts/';

class PostService {
static getPosts() {
    return new Promise( (resolve, reject) => {
        axios.get(URL)
        .then(res => resolve(res.data.map(post => ({
                    ...post,
                    createdAt: new Date(post.createdAt)
                }))))
        .catch(reject)
    });
}
...