Cześć,
od kilku dni staram się postawić produkcyjnie front napisany w ReactJs.
W środowisku developerskim wszystko fajnie działa. Na czystym vps postawiłem backend w javie, wrzuciłem projekt React na serwer i wywołując komendę npm start
projekt startuje i pobiera wszelkie niezbędne dane z backendu.
Schody zaczynają się kiedy próbuje odpalić reacta w wersji produkcyjnej. Docelowo chciałbym cały front wrzucić do dockera ale teraz dla testu
uruchamiam npm run build, niby wszystko się buduję ok, tworzy się katalog build
następnie odpalam serve -s build
strona startuję można się na nią dostać jednak nie pobiera żadnych danych z backendu.
w package.json mam "proxy": "http://localhost:8080/"
Poniżej przykład jak w react pobieram dane:
await fetch(url, {
method: 'GET',
withCredentials: true,
credentials: 'include',
headers: {
'Content-Type': 'application/json'
}
})
.then(async response => {
const isJson = response.headers.get('content-type')?.includes('application/json');
data = isJson && await response.json();
if (!response.ok) {
const error = (data && data.message) || response.status;
responseStatus = response.status;
return Promise.reject(error);
}else{
return data;
}
})
.catch((error) => {
errorMessage = error.toString();
});
return data;
Nie bardzo wiem jak rzucić na konsole cały adres z którego próbuje pobierać dane react, w internecie wyczytałem, że wersji prod strzela na localhost:3080 a nie bierze z package.json ?
Wiem, że metoda którą wyżej opisałem raczej nie będzie docelowo dobra na prod, kombinowałem z takim rozwiązaniem:
https://medium.com/bb-tutorials-and-thoughts/how-to-develop-and-build-react-app-with-nodejs-bc06fa1c18f3
jednak tam w projekcie nodjs jest expres i obsługa requestów z reacta, ja chciałbym żeby react po dane strzelał bezpośrednio na localhost:8080 gdzie chodzi Java o ile jest taka opcja.
Będę wdzięczny za wszelkie podpowiedzi jak można odpalić taki projekt w wersji prod.