React-Native Не удалось подключиться к серверу разработки в createReactContext()

Мое приложение Android, отвечающее за реакцию, падает с ошибкой ExecutionException.

«Не удалось подключиться к серверу разработки».

Метод, который дает сбой, - ReactInstanceManagerImpl.createReactContext().

Но это не обычная ошибка, как показано на этом снимке экрана:

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

Logcat показывает мне эту трассировку стека:

Exception in native call from JS
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException:
 Could not connect to development server.
        at com.facebook.react.ReactInstanceManagerImpl.createReactContext(ReactInstanceManagerImpl.java:860)
        at com.facebook.react.ReactInstanceManagerImpl.access$700(ReactInstanceManagerImpl.java:98)
        at com.facebook.react.ReactInstanceManagerImpl$ReactContextInitAsyncTask.doInBackground(ReactInstanceManagerImpl.java:194)
        ...
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException:
        at com.facebook.react.common.futures.SimpleSettableFuture.get(SimpleSettableFuture.java:68)
        at com.facebook.react.ReactInstanceManagerImpl.createReactContext(ReactInstanceManagerImpl.java:831)
        ... 9 more
Caused by: java.lang.RuntimeException:
        at com.facebook.react.bridge.ReactBridge.loadScriptFromFile(Native Method)
        at com.facebook.react.bridge.JSBundleLoader$2.loadScript(JSBundleLoader.java:58)
        at com.facebook.react.bridge.CatalystInstanceImpl.runJSBundle(CatalystInstanceImpl.java:148)
        at com.facebook.react.ReactInstanceManagerImpl$4.call(ReactInstanceManagerImpl.java:851)
        ...

Это говорит о том, что сервер отправил код javascript обратно на устройство, и ReactBridge.loadScriptFromFile() каким-то образом не может обработать пакет.


Моменты для уточнения:

  • это происходит на эмуляторе и устройстве (подключенном через USB)
  • это происходит в Linux (Mint) и Windows (8.1)
  • Я запустил adb reverse tcp:8081 tcp:8081 по обычному совету
  • Я запустил react-native start и упаковщик/сервер работает
  • устройство ДЕЙСТВИТЕЛЬНО подключается к серверу разработки, так как это регистрируется в окне упаковщика
  • URL-адрес, который нажимает устройство, возвращает данные, что можно увидеть, скопировав его в адресную строку браузера.

Чем это отличается от обычного сообщения "Не удалось подключиться..."?

Вот скриншот того, что происходит, когда сервер законно не работает:

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

Различия включают в себя:

  • нет ExecutionException или RuntimeException перед сообщением об ошибке
  • дополнительная ясность с предоставлением URL-адреса, который был вызван на сервере
  • ошибка исходит от DevServerHelper.onFailure()

Logcat показывает, что трассировка стека в этом нормальном ожидаемом случае сильно отличается:

Unable to download JS bundle
com.facebook.react.devsupport.DebugServerException:
 Could not connect to development server.
        at com.facebook.react.devsupport.DevServerHelper$1.onFailure(DevServerHelper.java:196)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:140)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)

person Richard Le Mesurier    schedule 13.03.2017    source источник
comment
Я нашел 2, возможно, связанных сообщения без гораздо более полезной информации: Томас здесь из 2016 года и Один из Клу, сделанный буквально на днях   -  person Richard Le Mesurier    schedule 13.03.2017


Ответы (1)


Похоже, это было вызвано неправильной установкой Windows Build Tools. Это сломало команды node-gyp, необходимые для моего проекта.

Следуя инструкциям на странице node-gyp, я правильно настроил свою машину.

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

person Richard Le Mesurier    schedule 17.03.2017