React native ERROR Packager не может прослушивать порт 8081

85

Когда я запускаю команду react-native start, она показывает Packager can't listen on port 8081.

Я знаю, что проблема связана с программным обеспечением, использующим мой порт 8081.

Я использую Resource Monitor, чтобы увидеть порт, но не могу найти 8081, нет 8081

Может кто-нибудь подскажет, как его найти?

введите описание изображения здесь

Мортон
источник
1
Взгляните на этот пост , вы должны его найти.
Antoine Grandchamp
В дополнение к другим ответам убедитесь, что сборщик Metro еще не запущен в каком-то давно забытом окне терминала где-то.
Lurifaxel 08

Ответы:

110

Вы можете запустить упаковщик на другом порту.

$ react-native start --port=8088

Также можно узнать, какие порты используются в Windows с помощью netstat.

$ netstat -a -b -o

Netstat дает вам PID, который вы можете использовать, чтобы убить процесс.

$ taskkill /pid 1234
Виктор Сек
источник
148

На Mac выполните следующую команду, чтобы найти идентификатор процесса, использующего порт. 8081
sudo lsof -i :8081
Затем выполните следующую команду, чтобы завершить процесс:
kill -9 23583

Вот как это будет выглядеть введите описание изображения здесь

RC_02
источник
4
Также работает на ubuntu 18.04
theapache64 06
1
Работал и у меня на MacOS High Sierra
Liran H
31

Эта ошибка возникает из-за того, что какой-то процесс уже запущен на порту 8081. Остановите этот процесс, а затем запустите свою команду, она запустит ваш код. Для этого сначала перечислите все процессы, которые используют этот порт, набрав

lsof -i :8081  

Эта команда отобразит идентификатор процесса (PID) процесса, а затем завершит процесс узла, используя

kill -9 <PID>  

Здесь PID - это идентификатор процесса узла.

Pulkit Aggarwal
источник
19

Это изображение действительно показывает, что ваш 8081 не используется. Если приведенные выше предложения не помогли, и ваше мобильное устройство подключено к компьютеру через USB (и у вас Android 5.0 (Lollipop) или выше), вы можете попробовать:

$ adb reconnect

В большинстве случаев это не обязательно, но на всякий случай давайте сбросим соединение с мобильным телефоном и перезапустим сервер adb. В заключение:

$ adb reverse tcp:8081 tcp:8081

Таким образом, всякий раз, когда ваше мобильное устройство пытается получить доступ к любому порту 8081 на самом себе, оно будет перенаправлено на порт 8081 на вашем ПК.

Или можно попробовать

$ killall node
Миодраг Смолович
источник
9

Ubuntu / Unix && MacOS

Мой Metro Bundler завис, и было запущено множество процессов узлов, но у меня не было никаких других разработок, кроме react-native, поэтому я запустил:

$ killall -9 node

Metro Bundler по умолчанию работает через узел на порту 8081, и иногда он может сталкиваться с проблемами, из-за которых он застревает (обычно из-за быстрого нажатия CTRL+ Sпри включенной горячей перезагрузке). Если вы нажмете CTRL+, Cчтобы остановить react-native run-androidпроцесс, вам внезапно придется плохо, потому что react-native-run-androidвы застрянете на:

Scanning folders for symlinks in /home/poop/dev/some-app/node_modules (41ms)

Исправить:

$ killall -9 node

$ react-native run-android

Примечание: если вы разрабатываете другие приложения в то время, завершение всех процессов узла может прервать их или любые запущенные вами службы на основе узлов, поэтому помните о широком характере killall -9. Если у вас нет базы данных или приложения на основе узлов или вы не против перезапустить их вручную, тогда все будет в порядке.

Причина, по которой я оставляю этот подробный ответ на этот наполовину несвязанный вопрос, заключается в том, что я являюсь решением распространенной наполовину связанной проблемы, для решения которой, к сожалению, требуется 2 шага, но, к счастью, требуется только 2 шага, чтобы вернуться к работе.

Если вы хотите удалить хирургическим путем именно мусор Metro Bundler на порту 8081, выполните действия, указанные в ответе RC_02 , а именно:

$ sudo lsof -i :8081

$ kill -9 23583

(где 23583 - идентификатор процесса)

agm1984
источник
6

Возьмите терминал и введите

fuser 8081/tcp

Вы получите идентификатор процесса, который использует порт 8081. Теперь завершите процесс.

kill <pid>
Печенье удачи
источник
4

Вы должны убить все процессы, запущенные на порту 8081, kill -9 $(lsof -i:8081)

Нагибаба
источник
2

Убедитесь, что на вашем компьютере уже запущен сервер Node, а затем закройте его.

Хитеш Саху
источник
2

Попробуйте запустить другой порт, например 3131. Выполните команду:

react-native run-android --port=3131
альваропако
источник
В моем случае McAfee использует этот порт. Как уже упоминалось, использование другого порта помогает.
Muthu
1

Это может быть связано с тем, что McAfee использует этот порт. Выполнение простого lsof -i 8081может не отображать приложение, и вам, возможно, придется выполнить sudo.

Сделайте, sudo lsof -i 8081и если эта команда даст результат, вы можете убить его, используя sudo launchctl remove com.mcafee.agent.macmn. После этого снова запустите упаковщик.

Санкальп
источник
1

в моем случае интернет на эмуляторе не работает, так как на эмуляторе нет сигнала Wi-Fi. Сброс эмулятора сработал.

Рохит Мандивал
источник
0

Чтобы исправить эту проблему, процесс, который я упомянул ниже.

Отмените текущий процесс «run-android с реакцией», нажав CTRL + C или CMD + C

Закройте командную строку окна сборщика (терминала) метро, ​​которая открылась автоматически.

Снова запустите команду на терминале: «react-native run-android

Нирав Джайн
источник
0

Прежде всего, в вашем устройстве перейдите на Dev. Вариант -> ADB через сеть после этого:

$ adb connect <your device adb network>
$ react-native run-android 

(или run-ios, кстати)

Если это успешно, ваше устройство установило app-debug.apk, откройте app-debug и перейдите в Dev. Настройки -> Хост сервера отладки и порт для устройства , введите IP-адрес вашего компьютера (обычно, Системные настройки -> Сеть ), как в примере ниже < IP-адрес вашего компьютера > : 8081 (без неравенства)

наконец, выполните команду ниже

$ react-native start --port=8081

попробуйте другие порты и убедитесь, что ваш компьютер и ваше устройство находятся в одной сети.

Hermanyo H
источник