Ошибка ответа сетевого ответа (create-react-native-app) (expo)
Я пытаюсь запустить приложение create-реагировать на родной на приложение expo в Android.
Во-первых, я создал проект, написав команду
тест create-реакции-native-приложения
потом я казнил
начало вечера
затем отсканировал код qr из приложения expo.
Но после сканирования QR-кода я получаю следующую ошибку:
Uncaught Error: Java.net,sockettimeoutException: failed to connect to after 10000ms
![enter image description here]()
Github Issue:
https://github.com/react-community/create-react-native-app/issues/144#issuecomment-296631692
Ответы
Ответ 1
Это связано с тем, что не открыт порт с вашего устройства.
В Ubuntu Run In terminal
sudo ufw status verbose
Чтобы открыть открытый порт, если вы не можете открыть порт 19000, вам нужно открыть порт, используя
sudo ufw allow 19000/tcp
а затем снова запустите
sudo ufw allow 19001/tcp
чтобы обслуживать http для ответа native, я разрешаю эту проблему в моем ubuntu, используя этот метод. Надеюсь, это поможет вам.
Чтобы открыть порт в брандмауэре Windows для доступа к TCP
В меню Начать нажмите Run
, введите WF.msc
и нажмите OK
.
В Брандмауэр Windows с расширенной безопасностью, в левой панели щелкните правой кнопкой мыши Входящие правила, а затем нажмите New Rule
в панели действий.
В диалоговом окне Тип правила выберите Порт, а затем нажмите Далее.
В диалоговом окне Протокол и порты выберите TCP. Выберите Конкретные локальные порты, а затем введите номер порта экземпляра порта React, например 19000 для экземпляра по умолчанию. Нажмите Далее.
В диалоговом окне Действие выберите Разрешить подключение, а затем нажмите Далее.
В диалоговом окне Профиль выберите все профили, описывающие среду подключения к компьютеру, когда вы хотите подключиться к механизму базы данных, а затем нажмите Далее.
В диалоговом окне Имя введите имя и описание этого правила, а затем нажмите "Готово" .
Аналогично, вы можете открыть порт 19001.
Ответ 2
В моем случае настройки брандмауэра сами по себе этого не делали. Моя проблема заключалась в том, что сетевые устройства VirtualBox приобретали приоритет, а хост Expo начинался с неправильной сети.
В Windows вы можете запустить ipconfig
и посмотреть на сетевые адаптеры, которые у вас есть. Кажется, что yarn start
npm
/yarn start
берет все, что отображается первым в этом списке.
Я узнал об этом отсюда: https://github.com/react-community/create-react-native-app/issues/60
Если вам не нужны другие сетевые адаптеры в списке, вы можете отключить их в интерфейсе сетевых подключений панели управления.
Если вам нужно использовать эти подключения и провести выставку, то для решения этой проблемы я следовал этому процессу:
- Перейти к панели управления> Сеть и Интернет> Сетевые подключения
- Щелкните правой кнопкой мыши нужное соединение (соединение с более высоким приоритетом)
- Нажмите "Свойства"> "Протокол Интернета версии 4"
- Нажмите "Свойства"> "Дополнительно"
- Снимите флажок "Автоматическая метрика"
- Введите 10 в "Метрика интерфейса"
- Нажмите ОК.
Повторите для соединения с более низким приоритетом, но на этот раз введите 20 в "Метрика интерфейса",
Теперь вы используете соединение с более высоким приоритетом по умолчанию.
Ответ 3
Вы можете обойти это, установив ip-адрес вашего ноутбука на статический ip, скажем 192.168.1.69, тогда вам нужно изменить ответный IP-адрес нативного пакета-упаковщика на тот же самый ноутбук, используя
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
снова запустите свой проект, и вам будет хорошо.
Ответ 4
![enter image description here]()
Прежде всего отключите неиспользуемое сетевое соединение. В моем случае это был VirtualBox. Может быть, он использует тот же порт. Я не уверен в этом. после отключения неиспользуемых соединений перезапустите упаковщик. если вы использовали npm, то наберите
npm start
Ответ 5
- Найдено адрес ipv4
- откройте приложение expo, затем нажмите, чтобы открыть кнопку снизу
- написать exp://[ipv4adress]: 19000 для поиска
- Затем ваше приложение откроется
Ответ 6
Я предлагаю вам установить приложение expo для реакции native, ссылку на официальное руководство здесь
npm install -g exp
Затем вы можете использовать программное обеспечение Genymotion для эмуляции различных настроек среды для запуска вашего приложения:
exp start
Если вы используете в терминале "npm start" с ответом native, для вас следующее.
Я узнал, что, если мое приложение успешно работает, адреса IpV моего компьютера, которые показаны на терминале, и которые находятся на приложении Expo, идентичны, например:
ipconfig -> IPv4 Address. . . . . . . . . . . : 10.0.0.124
exp://10.0.0.124:19000
Основываясь на этом наблюдении, я решил эту проблему следующим образом:
- Закрыть npm prompt script, на котором запущено приложение
- Приложение Close Expo
-
Найдите свой IP, выполнив команду в терминале:
ipconfig
-
Запустите команду в командной строке NodeJS с вашим IP (например, 10.0.0.124)
set REACT_NATIVE_PACKAGER_HOSTNAME=10.0.0.124
-
Запустить приложение Expo, сканировать штрих-код
npm start
Если это не поможет, используйте следующие шаги, рекомендованные разработчиками React, в дополнение к другим разумным усилиям:
- Установить Genymotion с VirtualBox
- SignUp на сайте Genymotion
- Запустите программу Genymotion и! SignIn
Ответ 7
в Windows
-
запустите команду ipconfig
в командной строке
-
получить адрес ip4 и скопировать его.
Чем
- Этот ПК> свойства> расширенные системные настройки> переменные среды
- добавьте следующую системную переменную:
REACT_NATIVE_PACKAGER_HOSTNAME
- В качестве значения переменной мне пришлось вставить ip4.
затем запустите npm start
Это работает для меня
Ответ 8
В случае, если кто-то все еще ищет ответ. Сначала сделайте основную вещь: сначала отключите VirtualBox Host-Only Network
, открыв сетевые настройки. Это сработало для меня.
Ответ 9
Если вы используете git bash для разработки, то это решение Icruz4 поможет
Вместо
set REACT_NATIVE_PACKAGER_HOSTNAME
Использование:
export REACT_NATIVE_PACKAGER_HOSTNAME='192.168.1.123'
Замечания:
Когда вы запускаете
npm start
Экспо расскажет вам о выходе используемого им IP-адреса. Если этот IP-адрес не является IP-адресом,
REACT_NATIVE_PACKAGER_HOSTNAME
переменная среды не установлена должным образом
Ответ 10
Я сделал все, что упоминалось в контексте. Просто изменил мою подключенную сеть Wi-Fi от публичного до частного. Это работало для меня
Ответ 11
Этот вопрос можно было бы решить путем:
Установка переменной окружения с альтернативными инструкциями здесь
Или же
Назначение приоритета матрицы интерфейса для сетевых адаптеров с подробными инструкциями здесь или здесь.
Или же
Машина Ubuntu не может открыть порт
После внесения любых изменений перезагрузите компьютер перед тестированием, если он будет работать.
Удачи!
Ответ 12
У меня была такая же проблема. Проблема заключается в том, что запуск нити команды или запуск npm обнаруживает первый активированный сетевой адаптер, который он находит, который просто является адаптером для VirtualBox на моем (и многих других машинах). Решение:
вручную установите переменную среды REACT_NATIVE_PACKAGER_HOSTNAME или отключите неиспользуемый сетевой адаптер в сетевом подключении Windows (см. изображение). Проблема заключается в том, что Expo находит первый сетевой адаптер, а не активный сетевой адаптер, обеспечивающий подключение к Интернету.
![enter image description here]()
Ответ 13
В моем случае эта проблема возникла из-за того, что приложению Expo android нужно разрешение " рисовать поверх других приложений ", а я его не дал. Так что я даю это разрешение на приложение Expo, и проблема решена..
Ответ 14
Одним из самых простых и 100% работающих решений является:
- Включите мобильную точку доступа на своем компьютере для разработки (ПК или настольный компьютер) и подключите устройство Android к этой точке доступа.
- Перейдите в Панель управления> Сеть и Интернет> Сетевые подключения. Вы окажетесь здесь, как показано: Настройка сетевых подключений.
- Затем установите IP-адрес для подключения по локальной сети (ваш DESKTOP HOTSPOT) к желаемому, скажем: 192.168.1.69, щелкнув правой кнопкой мыши соответствующее соединение и выбрав свойства → Протокол Интернета версии 4 (TCP/IPv4) → Свойства Затем установите приоритет этого соединения, чтобы быть самым высоким, и это лучше всего описано здесь
-
Затем откройте командный терминал и запустите:
set REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Windows)
REACT_NATIVE_PACKAGER_HOSTNAME=192.168.1.69 (Mac & Linux)
- Затем перезапустите сервер expo, запустив npm start в папке проекта expo, и запустите приложение на устройстве Android, отсканировав сгенерированный QR-код с приложением expo.
Ответ 15
Если вы попробовали все, что предлагают другие ответы, и это все еще не работает, проверьте также, что ваш компьютер и ваш телефон подключены к одной и той же сети WIFI. Для меня это то, что потратил впустую час.
Ответ 16
В Windows,
set REACT_NATIVE_PACKAGER_HOSTNAME=my-ip-address
работал внутри моего терминала git bash, но не cmd. В git bash, после запуска npm start, у меня появилось всплывающее окно брандмауэра, которое я нажал на кнопку allow, и это сработало!
Ответ 17
- В своем устройстве: войдите в свое приложение expo, создайте учетную запись, если у вас ее нет.
- В вашей системе: открыть терминал, перейдите в каталог проекта с помощью команды cd, а затем введите
sudo exp start
и после этого вы спросите свои данные для входа в учетную запись expo. - Это даст вам qr-код для сканирования.
Ответ 18
Я пробовал много решений, только таким образом помог мне решить эту проблему:
В Windows:
- перейдите в раздел "Сеть и подключения" в панели управления Windows (Центр управления сетями и общим доступом> Изменить настройку адаптера)
- Отключите все виртуальные окна, которые вы можете увидеть здесь.
- Перезапустите npm или пряжу или выставку...
Ответ 19
Вам просто нужно открыть порт в Firewall Window, и все должно работать.
1. В меню "Пуск" выберите "Выполнить", введите WF.msc и нажмите "ОК".
В брандмауэре Windows с расширенной безопасностью в левой панели щелкните правой кнопкой мыши Правила входящих сообщений и выберите Новое правило в панели действий.
В диалоговом окне "Тип правила" выберите "Порт" и нажмите "Далее".
В диалоговом окне "Протокол и порты" выберите TCP. Выберите "Определенные локальные порты", а затем введите номер порта экземпляра порта React, например 19000 для экземпляра по умолчанию. Нажмите кнопку "Далее.
В диалоговом окне "Действие" выберите "Разрешить подключение" и нажмите "Далее".
В диалоговом окне "Профиль" выберите любые профили, описывающие среду подключения к компьютеру, когда вы хотите подключиться к механизму базы данных, а затем нажмите "Далее".
В диалоговом окне "Имя" введите имя и описание этого правила и нажмите "Готово".
Аналогичным образом вы можете открыть порт 19001.
Ответ 20
Я потратил весь день на поиски ответа и, наконец, случайно нашел решение. Просто измените соединение с локальной сети на туннель
Ниже изображение,
![enter image description here]()