Почему я могу успешно выполнить запрос на выборку в React на моем локальном хосте, но не на развернутом приложении (развернуто на AWS)? - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь сделать GET-запрос к моему внутреннему API, расположенному на Heroku, используя fetch в React. Ответ JSON. Мое приложение реагирования развернуто на AWS ampify, и запрос API работает, только если я использую npm start для запуска приложения на локальном хосте. У меня есть свой внутренний URL-адрес, сохраненный на прокси в пакете. json, и он точно такой же для моего локального кода и развернутого кода. Код, который выполняет выборку -


    componentDidMount() {
        fetch(this.courseURL)
            .then((res) => res.json())
                .then((data) => {
                    console.log(data)
                    let courses = data.map((course) => {
                        const { course_info, modules } = course;
                        return <CourseItem 
                        key={course_info.id} 
                        info={course_info} 
                        redirectPath={`/courses/${course_info.id}`}
                        instructor={course_info.teacher.name}
                        numModules={ modules.length }
                        />
                    })
                    this.setState({courses: courses})
                    console.log(this.state.courses)
              })
                .catch(err => console.log(err))
            }

И ошибка, которую я получаю в своем журнале консоли.

SyntaxError: Unexpected token < in JSON at position 0

Опять же, это не происходит при запуске моего код локально, это происходит только в развернутой версии.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

У меня такая же проблема, как я описываю здесь .

Локально все работает. Но когда я развертываю приложение, я подозреваю, что в сборке есть что-то, что не «видит» URL API.

Вы уже нашли решение своей проблемы?

0 голосов
/ 30 января 2020

Ваш запрос - заметка, возвращающая JSON назад, она возвращает HTML назад (Unexpected token < - начало <html> на странице, возвращенной из вашей выборки.

Откройте инструменты разработчика и найдите запрос, который соответствует этому вызову, и посмотрите «предварительный просмотр» того, что он возвратил. Спойлер: Это будет HTML (вероятно, ошибка).

https://mkyong.com/computer-tips/how-to-view-http-headers-in-google-chrome/

...