#reactjs #proxy #fetch #create-react-app
#reactjs #прокси #выборка #создать-реагировать-приложение
Вопрос:
Я поместил строку «прокси»: ‘http://192.168.1.36:4000 ‘который соответствует IP-адресу и порту моего expressjs API, но когда я выполняю выборку для получения информации на моем сервере, я получаю сообщение об ошибке типа:> POST http: // localhost: 3000 / api / users / login 400 (BadЗапрос). Из того, что я понял из ошибки, выборка использует порт моего приложения react, а не порт моего экспресс-API. Порт 3000 не принадлежит моему API.
{
"name": "portfolio",
"version": "1.0.0",
"private": true,
"proxy": "http://192.168.1.36:4000", // This line
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-redux": "^7.2.2",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.1",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"
},
fetch('/api/users/login', {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
email: email,
password: password
})
})
.then((res) => res.json())
.then((res) => {
if(!res.error) {
localStorage.setItem('auth', res.token);
dispatch({ type: LOGIN, user: res.user, token: res.token });
} else {
dispatch({ type: ERROR, message: res.error });
}
})
Ответ №1:
Вот как я решил ее с помощью React CRA:
- Удалите
http://localhost:3000
из вашего POST-вызова REST API, что означает, что вы должны просто вызватьPOST /api/users/login
- Добавьте прокси oneliner в
package.json
:{ ..., "proxy": "http://localhost:4000/"}
Этого должно быть достаточно, нет необходимости использовать расширения CORS в браузере с прокси.