Изменение прокси в package.json не работает

Я создал проект с помощью приложения 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, который является моим клиентским сервером. Я пробовал несколько комбинаций, ничего не работает


Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
4 171
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуйте удалить / 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"
  }
}

я сделал но не повезло

Raveendra Reddy 06.10.2018 08:02

в случае нескольких прокси, как я могу настроить

Raveendra Reddy 06.10.2018 08:21

Я отредактировал ответ и добавил несколько вариантов прокси, проверьте

Saqib Hussain 06.10.2018 10:48

Я пробовал это, но получаю сообщение об ошибке «прокси-сервер должен быть строкой»

Raveendra Reddy 06.10.2018 17:54

У меня тоже были проблемы с этой проблемой, и для меня решение состояло в том, чтобы переключиться с 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. Изначально я помещал его в конец файла под тегом «разработка». Не знаю, как это сработало, но сработало. Вот что я сделал:

  1. тег "proxy" перемещен под тегом "scripts" в файле response package.json
  2. удален файл response package-lock.json
  3. удалены модули узла реакции
  4. выполнил 'npm install' для переустановки узловых модулей
  5. Запустите приложение реакции, и оно сработало.

Мой файл 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"
    ]
  }
}

Другие вопросы по теме