Экспресс «/» ПОЛУЧИТЬ запрос не удается, но » / » опубликовать, поместить, удалить успешно

#reactjs #express

Вопрос:

Я не могу понять, что я здесь делаю не так, поэтому буду признателен за глаза или идею о том, как это исправить

Экспресс (4.17.1) Реакция (17.0.2)

Это прекрасно работает:

 router.get('/test', postListView)
router.post('/', postCreateView)
 

но это не удается:

 router.get('/', postListView)
 

Контроллеры:

 const postListView = async (req, res) => {
    // No output from req.method when route is to '/'
    console.log(req.method)
    res.json({message: 'List View'})
}

const postCreateView = async (req, res) => {
    console.log(req.method)
    res.json({message: 'Create View'})
}
 

Мой запрос на сообщение Реагирует на вызов (работает нормально):

 fetch(`/`,{
  method:'POST',
  headers:{
    'Content-type':'application/json'
  },
  body: JSON.stringify({title:text.current.value})
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.log(err.message))
 

ПОЛУЧИТЬ запрос, который не удается:

 fetch(`/`)
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.log(err.message))
 

Ошибка в запросе GET:

 Unexpected token < in JSON at position 0
 

Я могу открыть запрос GET в браузере, перейдя напрямую в express (localhost:5000).

Реакция проходит через «прокси»:»http://127.0.0.1:5000″

Я думаю, что мне не хватает чего-то фундаментального с запросами GET здесь, но я не вижу этого, поэтому любая помощь или документы будут оценены по достоинству.

Спасибо,

Комментарии:

1. Какую ошибку вы видели ? Пожалуйста, проверьте вкладку «Сеть» браузера или журналы консоли, открыв «Инструменты разработчика». А затем проверьте, есть ли какие-либо журналы ошибок в журналах вашего экспресс-приложения.

2. На вкладке «Сеть» нет ошибок, и единственная ошибка, которую я получаю, размещена в вопросе » Неожиданный токен Почтальон может просто отлично попасть в конечную точку на порту 5000 (экспресс), но, похоже, это что-то внутри react, не попадающее в экспресс через прокси…может быть?

Ответ №1:

Так как вы используете /test в качестве ресурса путь для ПОЛУЧЕНИЯ маршрута. Лучше использовать тот же маршрут, чтобы сделать запрос GET из вашего приложения react.

 fetch(`/test`)
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.log(err.message))
 

Для / пути вам необходимо указать, какой метод вы используете, так как вы используете один и тот же путь как для методов запроса GET, так и для запроса POST.

 fetch(`/`, { method:'GET' })
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.log(err.message))
 

Комментарии:

1. Переход к «/тестированию» ДЕЙСТВИТЕЛЬНО работает, и проблема не в этом. Переход в » / » НЕ работает…вот в чем проблема.

2. Можете ли вы проверить обновленный ответ

3. Как правило, при использовании метода fetch, если он не применяется, по умолчанию используется метод GET, однако я принял предложение и заставил его выполнить запрос GET, и он по-прежнему не выполняется. Вкладка сеть показывает, что React даже не направляется на сервер backend express. Каким-то образом реагировать-это держать запрос при себе и не перенаправлять его обратно, чтобы выразить…не знаю, как это исправить, не изменив фактический URL (что я не хочу делать, даже если это работает)

4. Да, это верно