У меня есть работающее приложение react.js, которое работает с использованием npm start (приложение, созданное с использованием приложения create-react-app). Когда я пытаюсь запустить npm run build, он создает приложение. Я подаю его, используя
serve -s build -l 3000
Он загружает первую страницу информационной панели, но не взаимодействует с сервером. Я поместил операторы console.info на сервер, чтобы проверить любые входящие запросы, но он никогда ничего не регистрирует... что означает, что клиент не разговаривает с сервером. У меня есть оператор прокси в package.json для подключения к серверу через порт 3300. Это работает в режиме разработки, но в рабочем режиме, похоже, не используются настройки прокси в package.json.
Пожалуйста, помогите... это мой первый переход в производственный режим... любое руководство по переключению в производственный режим поможет.
Кстати, я также использую реактивную загрузку...





Поле прокси в package.json используется только при разработке webpack-dev-server. Вы можете узнать больше об этом здесь
Это будет зависеть от того, как вы развертываете свое приложение, что вы пытаетесь сделать, трудно дать вам ответы, не зная их.
ну у меня простое приложение. Один для серверной части с использованием node.js + express.js + MongoDB, который серверирует API на локальном хосте: 3300. Другое — это приложение для реагирования, созданное с использованием прослушивания приложения create-реагировать на локальном хосте: 3000. Я использую «proxy» = «локальный: 3300» в package.json приложения реакции. Приложение отлично работает с «npm run dev» для сервера и «npm start» для клиента. Теперь я хочу установить его на машину моего клиента в рабочем режиме. Я использовал «npm run build» и скопировал все файлы, кроме папки /src. Вам нужна дополнительная информация? пожалуйста, спросите... это важно для меня.
И вы хотите развернуть приложение реакции и экспресс-приложение отдельно? как оба работают на разных портах?
Да, я стремлюсь к тому, чтобы это было отдельно. прямо сейчас решение, которое я нашел, обслуживает клиента статически через сервер. но решение для удаленного сервера было бы лучшим. Спасибо
Затем просто отправьте запрос на localhost: 3300 вместо того, чтобы отправлять его на тот же порт, я предполагаю, что вы отправляете такие запросы fetch(/api/endpoint), вместо этого делайте fetch('https://localhost:3300/api/endpoint')
Ой! Я делал это раньше.
Затем я могу установить домен: порт в файле конфигурации и добавить префикс к URL-адресу. хорошо, спасибо большое.
Если вы используете axios, вы можете установить baseUrl по умолчанию на https://localhost:3300, а затем сделать axios.get('/api') вместо axios.get('https://localhost:3300/api')
Но... никто на самом деле не говорит, что, черт возьми, использовать для производства! «Используйте это только для тестирования» — тогда вся остальная документация рухнет.
Спасибо за всю помощь, ребята....
Наконец, я понял, что «npm run build» просто создает статические файлы для развертывания. А вот как его использовать, это наши руки. :)
Я скопировал папку сборки в папку /server и добавил следующую строку в свой корневой файл server.js. В принципе, подаются статические файлы из папки /server/build и все прекрасно работает.
app.use('/', express.static(__dirname+'/server/build'))
Спасибо за поддержку. :)
У меня аналогичная проблема, но я не использовал Express. Это простое приложение React Js, которое мне пришлось развернуть, а мой серверный API находится на другом сервере. Что я могу сделать, чтобы заставить его работать? Могу ли я использовать строку, которую вы использовали, чтобы исправить это, или создать конфигурацию setupProxy.js? Не могли бы вы указать шаги? Спасибо
Поле
proxyиспользуется только для сервера webpack-dev в разработке, оно не используется в производстве.