Cześć. Zrobiłem aplikację w Reakcie z małym backendem - plikiem servera i modułem mail, który odpowiada za wysyłanie maila z formularza na stronie. Na Heroku cała aplikacja działała bez zarzutu. Wczoraj wrzuciłem tę stronę na MyDevil i nie działa mi backend. Frontend w całości działa prawidłowo. Zrobiłem więc testowy endpoint /get w pliku server.js, z którym łączy się Axios z Reacta, następnie endpoint z server.js odpowiada poprzez res.json("test"). Niestety React nie drukuje tego "test" w konsoli, tylko jakieś "hello world", którego nie mam nigdzie w projekcie. Zauważyłem, że na Heroku, gdy wejdę w trybie developerskim w zakładce sieć, to przy wspomnianym gecie "test", pojawia się w typie "json", a na MyDevil pojawia się "plain". Na MyDevil status tego geta to co prawda 200, ale wydaje mi się, że nie ma to nic wspólnego z moim plikiem server.js, bo nawet gdy zrobię pusty plik app.js w root projektu, to status ma 200. Nie mam zielonego pojęcia jak poustawiać cały ten projekt na MyDevil, dokumentacja jest dla mnie mało zrozumiała, a support też nie potrafi mi pomóc. Pewnie dlatego, że jestem kompletnie zielony w tym temacie, do tej pory uczyłem się tylko frontu i podstaw backendu, nie jestem po studiach informatycznych i nie znam się na sysadminowych sprawach, nawet deployment na Heroku był dla mnie dużym wyzwaniem. Próbowałem różnych rzeczy: zmieniałem nazwę servera na app.js, tak jak zalecali, instalowałem wszystkie backendowe dependencies z wiersza poleceń MyDevil, ale wszystko robię po omacku i nie wiem czy to ma jakikolwiek sens, za każdym razem zero jakiegokolwiek efektu.
Tu jest kod z Heroku, który dobrze działał.
To jest endpoint z pliku server.js:
app.get("/test", (req, res) => {
res.json("test");
});
To część frontendowa endpointa:
axios
.get("/test")
.then(function (response) {
console.log(response.data);
})
.catch(function (error) {
console.log("error");
});
Posiłkowałem się dokumentacją stąd - https://wiki.mydevil.net/Node.js
Włączyłem wiersz poleceń przez program Putty, zalogowałem się i wpisałem tam to wszystko co jest w dokumentacji we wstępnej konfiguracji i "wersje node.js". Nie wiem, czy to się "przyjęło". Jak wpisuję w wierszu node -v to pokazuje mi 6.17.1, zamiast 12, którą niby ustawiłem. Wpisałem też w wiersz to co jest w "moduły", mimo że jest to dla mnie niezrozumiałe. Gdy w wierszu poleceń będąc w folderze public_nodejs wpisuję npm install to wyskakuje mi:
npm ERR! code EJSONPARSE
npm ERR! file /usr/home/Vyost/domains/mitroinc.pl/public_nodejs/package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected token h in JSON at position 4 while parsing near '{
npm ERR! JSON.parse homepage: "http://mi...'
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.
Więc instalowałem po kolei np. npm install express. Nie wiem czy powinienem instalować package z clienta, ale skoro frontend działa, to znaczy, że chyba samo się zainstalowało? Bardzo Was proszę, powiedzcie mi co mam po kolei zrobić, żeby backend zaczął mi działać. Zrobiłem w Reakcie build i wrzuciłem jego zawartość do folderu public w folderze public_nodejs. Nie mam pojęcia jak podłączyć do tego backend, już chyba z 10 godzin próbuję. Na Heroku wrzucałem specjalny kod do server.js i zmieniałem różne rzeczy w package.json, żeby odpalić aplikację, a tutaj nie mogę znaleźć żadnych informacji, które bym zrozumiał. Nie wiem, które pliki mam wrzucać i do których folderów.
Adres strony to www.mitroinc.pl. Domena jest na OVH, wstawiłem tam dnsy z MyDevil, potem w panelu MyDevil w zakładce "strony www" dodałem mitroinc.pl, w "strefach dns" też dodałem ten adres i nic tam w środku nie zmieniałem. Zaznaczyłem, że ta aplikacja jest w node.js. Opisałem to wszystko najbardziej szczegółowo jak się dało.