Сборка npm run не использует прокси

У меня есть работающее приложение react.js, которое работает с использованием npm start (приложение, созданное с использованием приложения create-react-app). Когда я пытаюсь запустить npm run build, он создает приложение. Я подаю его, используя

serve -s build -l 3000

Он загружает первую страницу информационной панели, но не взаимодействует с сервером. Я поместил операторы console.info на сервер, чтобы проверить любые входящие запросы, но он никогда ничего не регистрирует... что означает, что клиент не разговаривает с сервером. У меня есть оператор прокси в package.json для подключения к серверу через порт 3300. Это работает в режиме разработки, но в рабочем режиме, похоже, не используются настройки прокси в package.json.

Пожалуйста, помогите... это мой первый переход в производственный режим... любое руководство по переключению в производственный режим поможет.

Кстати, я также использую реактивную загрузку...

Поле proxy используется только для сервера webpack-dev в разработке, оно не используется в производстве.

Tholle 11.03.2019 17:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
1
6 452
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Поле прокси в package.json используется только при разработке webpack-dev-server. Вы можете узнать больше об этом здесь

Это будет зависеть от того, как вы развертываете свое приложение, что вы пытаетесь сделать, трудно дать вам ответы, не зная их.

Prithwee Das 11.03.2019 19:44

ну у меня простое приложение. Один для серверной части с использованием node.js + express.js + MongoDB, который серверирует API на локальном хосте: 3300. Другое — это приложение для реагирования, созданное с использованием прослушивания приложения create-реагировать на локальном хосте: 3000. Я использую «proxy» = «локальный: 3300» в package.json приложения реакции. Приложение отлично работает с «npm run dev» для сервера и «npm start» для клиента. Теперь я хочу установить его на машину моего клиента в рабочем режиме. Я использовал «npm run build» и скопировал все файлы, кроме папки /src. Вам нужна дополнительная информация? пожалуйста, спросите... это важно для меня.

Avinash 13.03.2019 12:08

И вы хотите развернуть приложение реакции и экспресс-приложение отдельно? как оба работают на разных портах?

Prithwee Das 13.03.2019 12:23

Да, я стремлюсь к тому, чтобы это было отдельно. прямо сейчас решение, которое я нашел, обслуживает клиента статически через сервер. но решение для удаленного сервера было бы лучшим. Спасибо

Avinash 13.03.2019 13:39

Затем просто отправьте запрос на localhost: 3300 вместо того, чтобы отправлять его на тот же порт, я предполагаю, что вы отправляете такие запросы fetch(/api/endpoint), вместо этого делайте fetch('https://localhost:3300/api/endpoint')

Prithwee Das 13.03.2019 13:41

Ой! Я делал это раньше.

Avinash 13.03.2019 13:44

Затем я могу установить домен: порт в файле конфигурации и добавить префикс к URL-адресу. хорошо, спасибо большое.

Avinash 13.03.2019 13:45

Если вы используете axios, вы можете установить baseUrl по умолчанию на https://localhost:3300, а затем сделать axios.get('/api') вместо axios.get('https://localhost:3300/api')

Prithwee Das 13.03.2019 13:47

Но... никто на самом деле не говорит, что, черт возьми, использовать для производства! «Используйте это только для тестирования» — тогда вся остальная документация рухнет.

dylanh724 26.03.2021 06:11

Спасибо за всю помощь, ребята....

Наконец, я понял, что «npm run build» просто создает статические файлы для развертывания. А вот как его использовать, это наши руки. :)

Я скопировал папку сборки в папку /server и добавил следующую строку в свой корневой файл server.js. В принципе, подаются статические файлы из папки /server/build и все прекрасно работает.

app.use('/', express.static(__dirname+'/server/build'))

Спасибо за поддержку. :)

У меня аналогичная проблема, но я не использовал Express. Это простое приложение React Js, которое мне пришлось развернуть, а мой серверный API находится на другом сервере. Что я могу сделать, чтобы заставить его работать? Могу ли я использовать строку, которую вы использовали, чтобы исправить это, или создать конфигурацию setupProxy.js? Не могли бы вы указать шаги? Спасибо

Ahmed 21.06.2019 21:05

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