Mój projekt opiera się na tworzeniu aplikacji . npm start
lub yarn start
domyślnie uruchomi aplikację na porcie 3000 i nie ma opcji podania portu w pliku package.json.
Jak mogę w tym przypadku podać wybrany port? Chcę uruchomić dwa z tego projektu jednocześnie (do testowania), jeden w porcie, 3005
a drugi jest3006
next -p 3005
jeśli ktoś inny wpadnie tutaj i szuka tego samego.Odpowiedzi:
Jeśli nie chcesz ustawiać zmiennej środowiskowej , inną opcją jest modyfikacja
scripts
części pliku package.json z:do
Linux (testowany na Ubuntu 14.04 / 16.04) i MacOS (testowany przez @ aswin-s na MacOS Sierra 10.12.4):
lub (być może) bardziej ogólne rozwiązanie @IsaacPak
Rozwiązanie Windows @JacobEnsor
cross-env lib działa wszędzie. Zobacz Aguinaldo Possatto odpowiedź szczegóły
Aktualizacja ze względu na popularność mojej odpowiedzi: obecnie wolę używać zmiennych środowiskowych zapisanych w
.env
pliku (przydatne do przechowywania zestawów zmiennych dla różnychdeploy
konfiguracji w wygodnej i czytelnej formie). Nie zapomnij dodać*.env
do,.gitignore
jeśli nadal przechowujesz swoje sekrety w.env
plikach. Oto wyjaśnienie, dlaczego użycie zmiennych środowiskowych jest lepsze w większości przypadków. Oto wyjaśnienie, dlaczego przechowywanie tajemnic w środowisku jest złym pomysłem.źródło
"start": "set PORT=3005 && react-scripts start"
"start": "export PORT=3006 react-scripts start"
pracował dla mnie"start": "export PORT=3001 && react-scripts start"
Ten zadziałał dla mnie w Ubuntu 16cross-env
gdy kilku programistów pracuje na różnych systemach. Może niektórzy wolą MAC, a inni wolą Windows. Lub inny scenariusz: wszyscy programiści używają systemu Windows, ale chcesz dodać zmienną środowiskową, która zostanie uruchomiona na serwerze CI / CD z systemem Ubuntu. Mam nadzieję że to pomogło.Oto inny sposób na wykonanie tego zadania.
Utwórz
.env
plik w katalogu głównym projektu i podaj tam numer portu. Lubić:źródło
.env
. W ich przypadku zalecają użycie,.env.local
którego nie powinieneś sprawdzać w kontroli źródła, abyś mógł bezpiecznie sprawdzić.env
w kontroli źródła. Tak więc nadal obowiązuje ta sama rada.Możesz użyć cross-env do ustawienia portu, a będzie on działał w systemach Windows, Linux i Mac.
następnie w pakiecie.json łącze początkowe może wyglądać tak:
źródło
Możesz podać nazwę zmiennej środowiskowej,
PORT
aby określić port, na którym serwer będzie działał.źródło
"start": "set PORT=3005 react-scripts start"
po prostu ustaw port, ale nie uruchamia aplikacji"start": "set PORT=3005 && react-scripts start"
Dla moich użytkowników systemu Windows odkryłem sposób, aby zmienić port ReactJS, aby działał na dowolnym porcie, który chcesz. Przed uruchomieniem serwera przejdź do
W nim wyszukaj wiersz poniżej i zmień numer portu na żądany port
I jesteś gotowy iść.
źródło
node_modules
katalogu zostaną usunięte po aktualizacji pakietów. Prawdopodobnie najlepiej użyć jednej z pozostałych odpowiedzi.Utwórz plik o nazwie
.env
w głównym katalogu opróczpackage.json
i ustawPORT
zmienną na żądany numer portu.Na przykład:
.env
źródło
Po prostu zaktualizuj trochę w
webpack.config.js
:następnie biegnij
npm start
ponownie.źródło
W swoim
package.json
przejdź do skryptów i użyj--port 4000
lubset PORT=4000
, podobnie jak w poniższym przykładzie:package.json
(Windows):package.json
(Ubuntu):źródło
Działa to zarówno w systemie Windows, jak i Linux
pakiet.json
ale prawdopodobnie wolisz utworzyć .env z PORT = 3006 zapisanym w nim
źródło
'PORT' is not recognized as an internal or external command, operable program or batch file.
Zmiana mojego pliku package.json również
"start": "export PORT=3001 && react-scripts start"
działała dla mnie i korzystam z systemu macOS 10.13.4źródło
Podsumowując, mamy trzy podejścia do osiągnięcia tego:
Najbardziej przenośne będzie ostatnie podejście. Ale jak wspomniano w innym plakacie, dodaj .env do .gitignore, aby nie przesyłać konfiguracji do publicznego repozytorium źródłowego.
Więcej informacji: ten artykuł
źródło
domyślną konfigurację portu można znaleźć przy uruchomieniu aplikacji
przewiń w dół i zmień port na cokolwiek chcesz
mam nadzieję, że to może ci pomóc;)
źródło
yarn eject
najpierw.Spróbuj tego:
źródło
Byłoby miło móc określić port inny niż
3000
jako parametr wiersza poleceń lub zmienną środowiskową.W tej chwili proces jest dość zaangażowany:
npm run eject
scripts/start.js
i znajdź / zamień na3000
dowolny port, którego chcesz użyćconfig/webpack.config.dev.js
i zrób to samonpm start
źródło
W systemie Windows można to zrobić na 2 sposoby.
W obszarze „\ node_modules \ reaguj-scripts \ scripts \ start.js” wyszukaj „DEFAULT_PORT” i dodaj pożądany numer portu.
Np .: const DEFAULT_PORT = parseInt (process.env.PORT, 10) || 9999;
W pakiecie.json dodaj poniższy wiersz. „start”: „ustaw PORT = 9999 && start-scripts start” Następnie uruchom aplikację za pomocą NPM start. Uruchomi aplikację w porcie 9999.
źródło
Co powiesz na podanie numeru portu podczas wywoływania polecenia bez potrzeby zmiany czegokolwiek w kodzie aplikacji lub plikach środowiska? W ten sposób można uruchomić i obsługiwać tę samą bazę kodu z kilku różnych portów.
lubić:
$ export PORT=4000 && npm start
Możesz umieścić numer portu, który chcesz, zamiast powyższej przykładowej wartości
4000
.źródło
Jeśli już to zrobiłeś
npm run eject
, przejdź do skryptów / start.js i zmień port wconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
(w tym przypadku 3000) na dowolny żądany port.źródło
Zmiana domyślnego portu w aplikacji React
Przejdź do tej linii:
Zmień numer portu na swój numer portu
Na przykład:
Zapisz i wyjdź
źródło
npm/yarn install
.node_modules
Należy unikać zmiany plików .