Як npm start запускає сервер на порту 8000


85

Нещодавно я використовував папку angular-seed від github для розробки кутових додатків. У деяких попередніх підручниках angularjs в папці angular-seed була папка сценарію та файл server.js, які мали всю конфігурацію для запуску сервера вузлів. Отже, як зараз npm просто починає запускати сервер вузлів і де вся конфігурація цього сервера вузлів?



Я прийшов сюди, шукаючи некутове рішення (Next.js, яке в основному є React), і знайшов його рішення у цій відповіді нижче . Використовуючи Next.js, принаймні для мене, порти не визначені у package.jsonфайлі; npm run dev -- --port ####дозвольте мені вказати порт.
Jason R Stevens CFA

Відповіді:


85

Якщо ви подивитесь package.jsonфайл.

ви побачите щось подібне

 "start": "http-server -a localhost -p 8000"

Це повідомляє start a http-serverз адреси localhostна порту8000

http-сервер є вузловим модулем.

Оновлення: - Включаючи коментар @Usman, в ідеалі він повинен бути присутнім у вашому, package.jsonале якщо його немає, ви можете включити його в scriptsрозділ.


Я не зміг знайти це у своєму пакеті.json, однак додавши це в розділі "сценарії": {} мені вдалося.
Усман

@Usman В ідеалі він повинен бути там у вашому package.json, але якщо його немає, ви завжди можете додати його. Відповідь оновлено, дякую, що вказали.
Мрітунджай

1
ви просто запускаєте деякий http-сервер, але не реагуєте на сценарії. PORT = 3001 сценарій реагування-сценарій вирішує проблему
Ілля Худяков

81

У нас є додаток для реагування, і наші машини для розробки - це як mac, так і pc. Команда start не працює для ПК, тому ось як ми її обійшли:

"start": "PORT=3001 react-scripts start",
"start-pc": "set PORT=3001&& react-scripts start",

На моєму mac:

npm start

На моєму ПК:

 npm run start-pc

Це справді врятувало мій день! Я шукав правильний стартовий вузол на порту, відмінному від 3000 для Express. Дуже дякую!. До речі, команда start працює на ПК. Це виглядає так у моєму конфігурі"start": "set PORT=3001 && node ./bin/www"
Костянтин

Так, я неправильно набрав текст. Start працює на ПК, але синтаксис налаштування порту відрізняється від Mac / Linux. Тому у мене є 2 команди "старт". один - це "старт" для mac, а інший - "start-pc" для мого ПК.
YeeHaw1234

62

Щоб змінити порт

npm start --port 8000

питання було почати з порту 8000 ... помилка зробила це 9000, можливо?
Akber Iqbal

Так, це приймає як> ng serve "--port" "8000". Працює нормально.
Капіл Рагхуванші

1
Чому зайві дві риски?
gfels

@gfels, я поняття не маю. Але я спробував без двох зайвих рисок, і це не спрацювало.
jtagle

2
Навіть вказавши порт 8000 .., він все ще шукає 3000$ npm start -port 8000 > react-basics-v1@0.1.0 start F:\React\react-basics-v1 > react-scripts start "8000" Something is already running on port 3000.
Провідний розробник

35

Ви можете змінити порт у консолі, запустивши в Windows наступне :

SET PORT=8000

Для Mac , Linux або Windows WSL використовуйте наступне:

export PORT=8000

Експорт встановлює змінні оточення для поточної оболонки і всіх дочірніх процесів , як НПЕ , які могли б використовувати його.

Якщо ви хочете, щоб змінну середовища було встановлено лише для процесу npm , перед командою введіть змінну середовища, як це (на Mac та Linux та Windows WSL ):

PORT=8000 npm run start

1
Це набагато простіше для тимчасового тестування. Дякую!
sbbs

5
Я просто вказую це як частину команди start, коли я вже запускаю інші проекти на портах за замовчуванням. PORT=<port #> npm start
Drew Reese

30

Щоб правильно запустити порт у потрібному порту, використовуйте:

npm start -- --port 8000


1
Це саме те, що я прийшов сюди шукати. Я використовую Next.js (React) і тепер можу запускати сервер розробки на заданому порту; npm run dev -- --port 8000працював як оберіг.
Jason R Stevens CFA

Something is already running on port 3000нічого не працює
dotista2008

1
У мене це не спрацювало. Модуль автоматично запускається 3000.
BReddy

3
Чому є зайвий --?
Amir Heshmati

2
На двох додаткових --є дуже хороший відповідь в цій темі @AmirHeshmati stackoverflow.com/questions/43046885 / ...
theocikos

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.