Одна из самых неприятных вещей во время разработки - это момент, когда ты сталкиваешься со следующей ошибкой в командной строке при попытке запустить приложение локально:
Server Error: this port is already in useВ большинстве случаев это означает, что мы забыли о процессе, который работает в фоновом режиме, или думали, что «убили» тот процесс, но на самом деле этого не произошло, поскольку мы не использовали CTRL + C.
Общий подход
На машине Linux / Mac эта команда может помочь:
lsof -ti tcp:[PORT] | xargs killЧтобы понять, что же происходит, давай разберем это пошагово:
lsofиспользуется для вывода списка открытых файлов, чтобы можно было отслеживать процессы, которые прослушивают определенный порт;-iиспользуется для поиска желаемого порта;-tиспользуется для возврата толькоPID(идентификатор процесса), который мы ищем;|используется для передачи списка найденныхPIDследующей команде;xargsиспользуется для применения kill к каждому из этихPID;killфактически «убивает» каждыйPID. Возможно, если процессы нужно «убить» принудительно, нам понадобиться использоватьkill -9.
Более простой подход
А сейчас давай рассмотрим более простое решение, которое можно использовать:
# One port
npx kill-port [PORT]
# Multiple ports
npx kill-port [PORT1] [PORT2] [PORTN]Легче, правда? Таким образом мы извлекаем kill-port пакета npm, чтобы он мог сделать за нас всю грязную работу.
Он гораздо декларативнее и не требует пояснений, поэтому его определенно проще запомнить.