Я создал проект с помощью приложения create-response-app, и он работает на http: // локальный: 3000 /
когда я хочу сделать запрос к http: // локальный: 3090 / из моего приложения, я устанавливаю прокси в моем файле package.json, который не работает
componentDidMount() {
fetch('/api/si')
.then(response => {
console.info(response);
return response.json();
})
}
package.json
"proxy":"http://localhost:3090/api"
здесь мой ожидаемый вызов - localhost: 3090 / api / si, но он указывает на 3000, который является моим клиентским сервером. Я пробовал несколько комбинаций, ничего не работает



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте удалить / api из
"proxy":"http://localhost:3090/api"
или попробуйте
componentDidMount() {
fetch('/si')
.then(response => {
console.info(response);
return response.json();
})
}
Измените одно из них
В случае нескольких прокси вы можете сделать что-то вроде этого:
"proxy": {
"/auth/*": {
"target": "http://localhost:5000"
},
"/api/*": {
"target": "http://localhost:3090"
}
}
в случае нескольких прокси, как я могу настроить
Я отредактировал ответ и добавил несколько вариантов прокси, проверьте
Я пробовал это, но получаю сообщение об ошибке «прокси-сервер должен быть строкой»
У меня тоже были проблемы с этой проблемой, и для меня решение состояло в том, чтобы переключиться с fetch на axios (который, как мне кажется, в любом случае является более дружелюбным API).
Попробуйте что-то вроде этого:
В корне вашего проекта:
npm install axios
В вашем коде:
import axios from "axios";
componentDidMount() {
axios('/api/si')
.then(response => {
console.info(response);
return response.json();
})
}
Примечание. Я не тестировал ваш конкретный вариант использования, поэтому, пожалуйста, предложите отредактировать, если это не сработает. Главное, что переключение с axios на fetch для моих запросов API позволило мне без проблем использовать настройку proxy в package.json.
В моем случае исправление заключалось в том, чтобы поместить «прокси» под «скриптами» в файле response-app package.json. Изначально я помещал его в конец файла под тегом «разработка». Не знаю, как это сработало, но сработало. Вот что я сделал:
Мой файл package.json, который работал, это:
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"axios": "^0.21.1",
"react": "^17.0.2",
"react-bootstrap": "^1.6.1",
"react-dom": "^17.0.2",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"proxy": "http://localhost:5000/",
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
я сделал но не повезло