#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. Да, это верно