Невозможно загрузить сценарий. Убедитесь, что вы используете сервер Metro или что ваш пакет index.android.bundle правильно упакован для выпуска

react-native run-android команда завершается, оставляя сообщение в симуляторе Android. Сообщение выглядит следующим образом:

Unable to load script.Make sure you are either running a Metro server or that your bundle 'index.android.bundle' is packaged correctly for release.

Невозможно загрузить сценарий. Убедитесь, что вы используете сервер Metro или что ваш пакет index.android.bundle правильно упакован для выпуска

Что я делаю неправильно?

вы можете попробовать эту ссылку stackoverflow.com/questions/32572399/… ?

errorau 31.03.2019 16:54

У меня такая же проблема, потому что мое устройство не подключено к Интернету.

Huo Chhunleng 22.05.2019 03:44

Приходит эта ошибка: throw er; // Необработанное событие "ошибка"

Saeed 31.05.2019 17:36

я нашел и записал stackoverflow.com/a/58570426/6852210

Alireza 03.12.2019 07:41

@Belle Solution, ты нашел какое-нибудь решение?

Hitesh 24.01.2020 11:44

Черт возьми, @HuoChhunleng, я чуть не выбил свой ноутбук. Большое спасибо за подсказку!!

buddhiv 11.02.2020 15:59

Может быть, это поможет вам. medium.com/@adityasingh_32512/…

blue dream 07.04.2020 16:17

У меня была эта ошибка с AVD. Я только что открыл Android Studio> AVD Manager> Wipe Data. Это сработало для меня.

JmLavoier 24.07.2020 15:04

Пожалуйста, убедитесь, что ваши мобильные данные или Wi-Fi включены (это было проблемой для меня). Если да, то попробуйте альтернативы, описанные здесь

Mighty 30.12.2020 09:10

Я попробовал все решения ниже, прокомментированные и отвеченные разными людьми. Иногда это работает, но иногда нет никакого решения для меня..... лучшее решение для этой ошибки удалить apk с физического устройства и запустить приложение еще раз... для меня это работает на 100%!!!

Avishkar Patil 09.07.2021 07:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
263
10
197 152
53

Ответы 53

Вы еще не запустили сборщик. Запустите npm start или react-native start в корневом каталоге вашего проекта перед react-native run-android.

сначала я запускаю react-native start, но при запуске react-native run-android он завершается после успешной сборки

Belle Solutions 31.03.2019 17:59

У вас должно быть одновременно запущено 2 консоли узла. Один запускает и запускает упаковщик, другой запускает эмулятор.

Nerdragen 31.03.2019 18:02

У меня эта ошибка появляется, даже если сборщик запущен.

P.Lorand 23.04.2019 10:09

Убедитесь, что порт 8081 не заблокирован. Кроме того, убедитесь, что вы используете один терминал для запуска сборщика, подождите, пока он завершит загрузку графа зависимостей, а затем запустите react-native run-android на другом терминале.

Nerdragen 23.04.2019 16:16

@Nerdragen Должен ли я дождаться загрузки графа зависимостей, на самом деле я получил ** загрузку графа зависимостей. ** как сообщение в cmd

Arbaz.in 23.07.2019 13:54

@ Arbaz.in да, вам нужно сначала дождаться окончания загрузки графа зависимостей

Nerdragen 23.07.2019 14:53

Я получил сообщение об окончании загрузки, что нам означает это сообщение

Arbaz.in 23.07.2019 14:59

Это означает, что упаковщик завершил загрузку графа зависимостей, и вы можете запустить эмулятор.

Nerdragen 23.07.2019 15:00

я запустил эмулятор, я пишу реакция-родной запуск-андроид эту команду. после этой команды сервер запускается с портом 8081

Arbaz.in 23.07.2019 15:24

Команда запуска react-native приводит к загрузке графа зависимостей... сделано и не говорит о завершении или что-то в этом роде

Vikas Pandey 22.08.2019 12:41

Когда граф зависимостей завершит загрузку, это все, что он скажет. Держите эту консоль открытой и запустите отладчик

Nerdragen 22.08.2019 15:00

В Windows он запускается сам по себе, а в Linux нет, спасибо! Работайте идеально!

Adrian Serna 22.08.2019 20:03

@Nerdragen Как я могу проверить, заблокирован ли порт 8081 или нет.

Hasnain 05.10.2019 11:20

Я попытался запустить свой код из VS Code, и у меня была такая же ошибка. Пока я не использую npm start и react-native run-android , спасибо

Omar Isaid 25.04.2020 14:59

Похожая проблема случилась со мной.
По-видимому, Mcafee блокирует порт 8081. Мне потребовались часы, чтобы понять это.

Попробуйте запустить:

react-native run-android --port=1234

Когда приложение отображается с ошибкой на эмуляторе, войдите в настройки разработчика (Ctrl+M).

Измените «Хост сервера отладки и порт для устройства» на «localhost: 1234».

Закройте приложение и запустите его из панели приложений.

спасибо за подсказку, мне пришлось открыть порт 8081 в моем брандмауэре, и он заработал

ukie 21.06.2019 20:09

Большой плюс за это. Если у вас есть Mcafee, я бы попробовал это, у меня это сработало.

Puerto 01.08.2019 13:48

Спасибо, спас мой проект

Rafid 21.08.2019 16:36

Я застрял здесь на два дня, никогда бы не подумал, что это заблокированный порт! Большое спасибо!

P. Naoum 14.04.2020 23:40

Я попытался попасть в локальный хост: 8081 в браузере, но безуспешно. Небольшое исследование и выяснилось, что Macafee заблокировал этот порт. Пошел по твоему пути. Начал нормально работать.

Tushar Jajodia 07.06.2020 13:36

Я бездельничал о части mcaffee, но это также сработало для меня. Действительно оценил. :)

BartK_97 08.06.2020 19:26

Этот совет был тем, что мне нужно (Windows 10), в основном порт 8081 был заблокирован, и как только я убил все, что работало на этом порту, мое приложение волшебным образом заработало. Полезной командой была следующая, которая убила все процессы на порту 8081: for /f "tokens=5" %a in ('netstat -aon ^| find ":8081" ^| find "LISTENING"') do taskkill /f /pid %a

Ebe 30.11.2020 15:22

Это то, что именно происходит в моей системе, когда я начал с 1234, все работает нормально, исключение какое-то время вводило в заблуждение, сходил с ума, не знаю, как бы закончился мой день, если бы я не приземлился здесь, спасибо!

Naga 11.02.2022 18:25

ВАЖНЫЙ - В вашей среде может быть много виртуальных устройств. Убедитесь, что если вы меняете AVD, вы повторяете настройку снова.

ОТЛАДОЧНАЯ ИНФОРМАЦИЯ-

Если вы столкнулись с вышеуказанной ошибкой, вам нужно сначала проверить, что работает на порту 8081.

Самый быстрый способ найти это с помощью следующей команды в терминале

netstat -aon | findstr 8081

если это показывает вам что-то, это означает, что порт заблокирован. если возможно, разблокируйте этот порт.

В противном случае вам нужно будет изменить порт. Как это сделать, уже упоминалось в комментарии Навина Кумара выше.

react-native run-android --port=9001

Убедитесь, что 9001 также не используется :)

Круто .. это сработало для меня. Просто помните, если у вас есть привычка запускать сервер реагирования с помощью «npm start», добавьте « --port = 9001» в свой стартовый скрипт, а также в package.json.

saurabh 10.06.2021 18:44

Попробуйте следующее.

  1. Удалите папки Android и IOS
  2. запустить реактивный выброс
  3. запустить реакцию-родной запуск-андроид

Возможно после предыдущих шагов у вас есть запуск npm --reset-cache

Я работаю, я надеюсь, что это поможет вам.

Мое решение для этого, как показано ниже:

Запустить Метро-сервер

$ react-native start

Запустить Android

$ react-native run-android

Если вы видите ошибки, говорящие, что «порт 8081 уже используется», вы можете убить этот процесс и перезапустить его.

$ react-native start

См. Страница устранения неполадок React Native .

По умолчанию крошечный сервер JavaScript под названием «Metro Server» работает на порту 8081.

Вам нужно сделать этот порт доступным для запуска этого Сервера. Так,

  1. освободить порт
  2. закройте ваше виртуальное устройство
  3. снова "реагировать на родной андроид".

Как освободить порт?

http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html

Как убить процесс, который в настоящее время использует порт на локальном хосте в Windows?

и самое главное, я обновил версию своего узла с 8.x до 10.x (последняя), как было предложено facebook @https://facebook.github.io/react-native/docs/начало работы

Я просто хочу добавить неочевидную возможность, не рассмотренную здесь. Я использую @react-native-community/netinfo для обнаружения изменений в сети, в первую очередь состояния сети. Чтобы проверить состояние отключения сети, переключатель WIFI (на эмуляторе) должен быть выключен. Это также эффективно отсекает мост между эмулятором и средой отладки. Я не включал WIFI после тестов, так как был вдали от компьютера и сразу же забыл об этом, когда вернулся.

Есть вероятность, что это может иметь место и для кого-то еще, и это стоит проверить, прежде чем предпринимать какие-либо другие решительные шаги.

Это недооцененный ответ!

Sandy Garrido 22.09.2021 15:52

Эти шаги действительно помогают мне:

Шаг 1: Создать каталог в android/app/src/main/assets

команда Linux: mkdir android/app/src/main/assets

Шаг 2: Переименуйте index.android.js (в корневом каталоге) в index.js (Возможно есть файл index.js в таком случае его не нужно переименовывать), затем выполните следующую команду:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

Шаг 3: Создайте свой APK: react-native run-android

Пожалуйста, используйте index.js в последней версии.

Наслаждаться :)

Каково расположение этого файла в собственном проекте index.android.j?

Arbaz.in 24.07.2019 06:51

@Arbaz.in в корневом каталоге.

Saeed 24.07.2019 07:10

@ Arbaz.in Возможно, в корневом каталоге есть файл index.js, и в этом случае вы не нужно переименуете его.

Saeed 24.07.2019 07:11

@Саид да нашел

Arbaz.in 24.07.2019 07:12

@Saeed Шаги для окон?

Hasnain 05.10.2019 11:28

Для всех (Mac, Linux, Windows)

Saeed 14.01.2020 07:54

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

buddhiv 21.02.2020 07:09

@buddhiv Тогда какое идеальное решение?

Marfin. F 06.05.2020 00:19

Это сработало для меня. Но я не мог понять, что произошло. Эта ошибка начала происходить просто так.

JmLavoier 24.07.2020 05:03

Это сработало, и я могу отладить, и горячая загрузка тоже работает, хотя, как сказал @JmLavoier, я не знаю, почему она перестала работать и почему теперь она снова работает.

kingston 05.12.2020 16:48

Теперь логирование не работает, как запустить заново

Eren Tüfekçi 21.12.2020 12:47

У меня это сработало, и я смог загрузить приложение в эмуляторе, но сейчас. Я не могу собрать его из командной строки ./gradlew assembleRelease for error "> Task: app:mergeReleaseResources FAILED"

Arvind K. 31.07.2021 11:50

Есть ли способ "отменить" это??

Arvind K. 31.07.2021 11:55

Если у вас все правильно настроено, попробуйте следующее:

adb reverse tcp:8081 tcp:8081

Почему?

When the RN packager is running, there is an active web server accessible in your browser at 127.0.0.1:8081. It's from this server that the JS bundle for your application is served and refreshed as you make changes. Without the reverse proxy, your phone wouldn't be able to connect to that address.

Все кредиты Свинглайн0 .

Не могли бы вы добавить к своему ответу, почему это должно работать и что делает эта команда?

creyD 24.06.2019 10:22

целый день пытался переключать библиотеки, и это была моя проблема

Adam Katz 04.07.2019 19:57

Для меня эта ошибка была вызвана обновлением react-native

Starting with Android 9.0 (API level 28), cleartext support is disabled by default.

Если вы проверяете разницу обновлений, вам нужно создать манифест отладки. android/app/src/debug/AndroidManifest.xml

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools">
    <uses-permission android:name = "android.permission.SYSTEM_ALERT_WINDOW"/>
    <application android:usesCleartextTraffic = "true" tools:targetApi = "28" tools:ignore = "GoogleAppIndexingWarning" />
</manifest>

См. дополнительную информацию: https://stackoverflow.com/a/50834600/1713216

https://react-native-community.github.io/upgrade-helper/

У меня работало на RN 0.61.3.

Żabojad 30.10.2019 17:54

К сожалению, это не сработало для меня. У меня уже было это, и я все еще получаю ту же ошибку, хотя Metro Bundler работает.

Andrew 31.10.2019 20:18

Я обнаружил, что иногда мне нужны дополнительные переопределения, если у меня определен networkSecurityConfig, но, похоже, эти настройки всегда вызывают у меня проблемы. Вы можете попробовать удалить любой конфиг безопасности и указать android:usesCleartextTraffic = "true" в главном AndroidManifest.xml посмотрите, сработает ли это?

Tom 04.11.2019 21:38

У меня есть все эти настройки, включая android:usesCleartextTraffic = "true", но я все еще не могу запустить приложение на реальном устройстве.

Lucky_girl 16.07.2020 14:11

Работал на меня. Чтобы внести некоторую ясность, этот шаг был специально упомянут в документации по обновлению RN: reactnative.dev/docs/… Я могу порекомендовать просто скопировать отладочный AndroidManifest из проекта шаблона RN, сработало чудо: github.com/facebook/react-native/blob/master/template/androi‌​d/…

Chris Petty 10.12.2020 06:02

У меня была такая же проблема, проблема для меня заключалась в том, что адб не был в правильном пути среды, ошибка сообщает вам порт метро, ​​​​пока вы находитесь в adb, порты убиваются и перезапускаются.

Добавить переменную среды (ADB)

  1. Открытые переменные среды
  2. Выберите из второго кадра переменная ПУТИ и нажмите кнопку редактирования ниже.
  3. Нажмите на опцию добавления
  4. Отправьте путь к инструментам платформы SDK C:\Users\My User\AppData\Local\Android\Sdk\platform-tools

Note: Or depending where is located adb.exe in your machine

  1. Сохранить изменения

Запустите сборку Android снова

$ react-native run-android

Или

$ react-native start

$ react-native run-android

Вы можете попробовать следующее:

Добавьте эту строку в свой AndroidManifest.xml.

<application
[...]
android:usesCleartextTraffic = "true"
/>
[...]
</application>

Обновлено: Будьте осторожны, это долженfalse в производстве для безопасности вашего приложения.

После нескольких часов поиска ответа. Решение состояло в том, чтобы сделать узел понижения до версии 12.4.

В моем случае я понимаю, что ошибка возникает только в версии React Native 0.60 с версией Node 12.6.

Я столкнулся с этим только потому, что мой Wi-Fi был ошибочно отключен на моем эмуляторе. Я снова включил его, и он начал работать нормально. Надеюсь, кому-то это будет полезно

Для меня эта проблема началась с обновления react-native. Обновление было необходимо для добавления 64-битной поддержки.

Before:
-------- 
Environment:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.4 AI-183.6156.11.34.5692245

Packages: (wanted => installed)
react: 16.0.0-alpha.12 => 16.0.0-alpha.12
react-native: ~0.55.2 => 0.55.4
react-native-cli: 2.0.1

After:
------
info 
React Native Environment Info:
Binaries:
Node: 10.15.0
npm: 6.9.0
Watchman: 4.9.0
SDKs:
Android SDK:
API Levels: 23, 26, 27, 28
Build Tools: 27.0.3, 28.0.3
System Images: android-28 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: /undefined - /usr/bin/xcodebuild
npmPackages:
react: ^16.8.6 => 16.9.0 
react-native: 0.59.9 => 0.59.9 
npmGlobalPackages:
create-react-native-app: 2.0.2
react-native-cli: 2.0.1

Кроме того, одно важное изменение, которое я сделал для обновления, было в ../android/build/build.gradle.

android {
    ...
    defaultConfig {
        ...
        targetSdkVersion 28
        ...
    }
    ...
}

Мне пришлось изменить targetSdkVersion с 27 на 28 после предупреждения, когда я попытался загрузить сборку (.apk) в консоль Google Play. Мало ли я понял, что это было основной причиной вышеуказанной ошибки для меня. Немедленные ответы @tom и @tinmarfrutos имели абсолютный смысл.

Я решил проблему, добавив android:usesCleartextTraffic="true" в свой файл android/app/src/debug/AndroidManifest.xml.

Если вы работаете в ОС Linux, может быть случай, когда ваш удаленный сервер npm не работает. Откройте другой терминал (с каталогом проекта) и запустите эту команду запуск sudo npm или sudo react-native start перед выполнением sudo react-native run-android

В моем случае я установил прокси в своем эмуляторе. После удаления этого прокси все работает нормально.

Сообщение об ошибке в эмуляторе вводит в заблуждение. В моем случае я использовал Macbook. Мне нужно было изменить разрешения на android/gradlew, запустив $ chmod 755 ./gradlew, после чего приложение можно было собрать и развернуть на эмуляторе Android.

Если вы используете Linux, откройте терминал из корневого каталога приложения и запустите

npm start

затем откройте другое окно терминала и запустите:

react-native run-android

В некоторых случаях вам может понадобиться закрыть порт сборщика React-native и перезапустите приложение с тем же процессом

1.sudo kill -9 $(sudo lsof -t -i:9001)

2.npm start inside the project

3. react-native run-android

Что сработало для меня:

  1. закрыть все консоли
  2. открыть новую консоль
  3. $ adb devices
  4. убедитесь, что у вас подключено только одно устройство
  5. $ react-native run-android

возможность этой ошибки также неправильный путь,проверьте один раз

 export ANDROID_HOME=/Users/microrentindia/Library/Android/sdk/
 export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

Никогда не думал об этом. Но это был ответ для меня.

Siraj Alam 07.11.2019 12:17

Решение, которое сработало для меня, заключается в следующем:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
]; 

My code example

просто добавьте три всплеска: node_modules\metro-config\src\defaults\blacklist.js

заменить эту часть:

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
];

Я также столкнулся с этой проблемой. Я решил этот следующий шаг.

Проверьте путь Android SDK в Окружающая среда Истинная.

Добавлять ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk в Системная переменная
а также C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools путь в Системная переменная

заменить общий черный список, как показано ниже, сегмент кода,

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
];

в node_modules/metro-config/src/default/blacklist.js

Затем запустите npx react-native run-android --port 9001.

Удачного кодирования..!

[Быстрый ответ]

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

Эта ошибка связана с тем, что в Metro возникают проблемы с использованием некоторых комбинаций версии NPM и Node.

У вас есть 2 альтернативы:

  • Альтернатива 1: Попробуйте обновить или понизить версию npm и узла.
  • Альтернатива 2: Перейдите к этому файлу: \node_modules\metro-config\src\defaults\blacklist.js и измените этот код:

    var sharedBlacklist = [
      /node_modules[/\\]react[/\\]dist[/\\].*/,
      /website/node_modules/.*/,
      /heapCapture/bundle\.js/,
      /.*/__tests__/.*/
    ];
    

    и изменить на это:

    var sharedBlacklist = [
      /node_modules[/\\]react[/\\]dist[/\\].*/,
      /website/node_modules/.*/,
      /heapCapture/bundle\.js/,
      /.*/__tests__/.*/
    ];
    

    Please note that if you run an npm install or a yarn install you need to change the code again.

Начиная с Android 9.0 (уровень API 28) поддержка открытого текста по умолчанию отключена.

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

  1. установка нпм
  2. реактивный запуск
  3. реакция-родной запуск-андроид

И измените файл манифеста Android следующим образом.

<application
    android:name = ".MainApplication"
    android:icon = "@mipmap/ic_launcher"
    android:usesCleartextTraffic = "true" // add this line with TRUE Value.
android:theme = "@style/AppTheme">

Сначала выполните шаги 4 и 5, затем вы можете запустить свой проект. Если вы не получили результат (с шагами 4 и 5), выполните следующие действия.

1- Попробуйте понизить версию Node (текущая версия 12.13.1)

  choco uninstall nodejs
  choco install nodejs --version 12.8

2- Добавить путь к модулю npm (C:\Users\your user name\AppData\Roaming\npm) в системные переменные вместо пользовательских переменных

3- Установить реакцию в глобальном масштабе с помощью команды

  npm install -g react-native-cli

4- Перейдите в корень каталога вашего проекта и выполните следующую команду:

  react-native start

5- Откройте другой терминал в корне вашего проекта и выполните следующую команду:

   react-native run-android 

РЕДАКТИРОВАТЬ :

Вы используете Genymotion? Если да, выполните следующий шаг:

Если после вышеуказанного шага вы получите следующую ошибку?

error Failed to launch emulator. Reason: No emulators found as an output of `emulator -list-avds`.

Откройте свой genymotion и перейдите к:

genymotion menu->Settings->ADB-> Затем выберите use custom android sdk tools (нажмите «Обзор», чтобы найти местоположение SDK)

Наконец, снова запустите свой проект.

У меня также работала версия 12.9. Спасибо, я обновился до версии 12.13.x и начал сталкиваться с вышеуказанной проблемой.

Tadiwanashe 03.12.2019 12:59

Предыстория этого ответа: github.com/facebook/react-native/issues/26598

Christian Davén 03.01.2020 19:53

Это сработало для меня, но потом я получил development server returned response error code: 500... Metro has encountered an error: EACCESS: permission denied /tmp/metro-cache/33/.... Быстрый chmod +777 /tmp -R на моем локальном компьютере решил проблему. Предупреждение: никогда не +777 :-D

Pixel 31.08.2020 10:24

Это сработало для меня после нескольких попыток.

В файле node_modules\metro-config\src\defaults\blacklist.js

Заменять :

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
];

с участием :

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
];

надеюсь это поможет.

У меня тоже сработало. Но почему я должен был это исправить? Что пошло не так?

Mashrur 31.12.2019 15:09

Судя по всему, metro-config использовал \ для путей вместо /, которые этот ответ предлагает изменить. Не делайте этого. Изменение пакетов npm означает, что вся ваша команда должна делать это на своей машине, в CI, на стадии подготовки, в рабочей среде и каждый раз, когда Metro-config выпускает обновление. Лучший подход — разветвить metro-config на GitHub, зафиксировать исправление, отправить и отправить PR, чтобы исправить это для всех.

Cameron Wilby 05.01.2020 05:28

обновить эту часть в черном списке метро

var sharedBlacklist = [
  /node_modules[/\\]react[/\\]dist[/\\].*/,
  /website/node_modules/.*/,
  /heapCapture/bundle\.js/,
  /.*/__tests__/.*/
];

вы также можете понизить версию node js до версии менее 12 и удалить nodemodule, а затем снова запустить npm install

Я сделал: реактивный запуск а также npx react-native run-android.

Однако для Min19 (на основе Ubuntu) у меня была такая же проблема, пока я не запустил:

echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

От: https://reactnative.dev/docs/troubleshooting#content

По крайней мере, у меня приложение работает на моем мобильном телефоне.

Попробуйте выполнить следующие действия, если вы пробовали все, что упомянуто в приведенных выше решениях:

  1. Создайте файл в android/app/src/main/assets
  2. Выполните следующую команду:

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

  1. Теперь запустите свою команду для сборки, например. реакция-родной запуск-андроид

Ничего себе, это помогло мне частично. Я готовил свое приложение для Google Play Market, все, что я сделал, это добавил новые значки активов для Android и изменил целевую версию на 28. Мне пришлось вернуться к версии v27, и все снова начало работать ... Я не знаю, почему реагировать не работает с сдк v28.

Michail Pidgorodetskiy 28.04.2020 20:59

У меня возникла та же проблема, после выполнения следующих шагов проблема была решена

  1. Четкие сторожевые часы: watchman watch-del-all.
  2. Удалите папку node_modules: rm -rf node_modules && npm install.
  3. Сбросить кеш Metro Bundler: rm -rf /tmp/metro-bundler-cache-*
  4. Удалить ускоренный кеш: rm -rf /tmp/haste-map-react-native-packager-*

Я уверен, что это какая-то комбинация других вещей, упомянутых здесь, таких как разрешение открытого текста, который я включил для локального хоста. Но это была последняя часть головоломки.

project.ext.react = [
    entryFile: "index.js",

    // ADD THESE THREE

    bundleAssetName: "index.android.bundle",
    bundleInDebug: true,
    bundleInRelease: true
]

РН: 0,61,3

это то, что исправило это для меня! Я строил вариант, и мне понадобился bundleInStaging: true для варианта staging! Жаль, что я не видел этот ответ намного позже, это могло бы действительно помочь мне когда-нибудь!

mswieboda 09.12.2021 15:58

Я столкнулся с той же проблемой, следуя React Native руководство (разработка для Linux и таргетинг на Android).

Этот проблема помог мне решить проблему в следующих шагах. Выполните следующие команды в следующей последовательности:

  1. (в каталоге проекта) mkdir android/app/src/main/assets
  2. react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
  3. react-native run-android

Вы можете автоматизировать вышеуказанные шаги, поместив их в scripts часть package.json следующим образом:

"android-linux": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res && react-native run-android"

Затем вы можете просто выполнять npm run android-linux из командной строки каждый раз.

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

Я смог решить эту проблему, выполнив следующую команду в терминале:

adb reverse tcp:8081 tcp:8081

Я была такая же проблема. Но этот метод решил это. Перейдите в папку Android, используя cd android, затем gradlew clean или ./gradlew clean в зависимости от того, что подходит для вашей ОС.

Я столкнулся с подобной проблемой. npx react-native init создает файл .gitignore, который игнорирует папку <project>/android/app/src/debug. Если вы позже клонировали этот проект, эта папка будет отсутствовать. Решение простое. В будущем добавьте эту строку в конец файла .gitignore.

!android/app/src/debug

Для вашего текущего проекта попросите создателя проекта зафиксировать эту папку. Я столкнулся с этой ошибкой в ​​​​реактивной нативной версии 0.63.

Как и большинство из нас, я предполагаю, что вы используете VSCODE. В моем случае я побежал

npx react-native start

с отдельного терминала

Теперь запустите npx react-native run-android со своего терминала в VSCODE.

Вот как я решил эту проблему, не касаясь сборки:

1- Закрыл виртуальное устройство

2- Протестировано на физическом устройстве -- (работает)

3- Создано новое виртуальное устройство с API 30 Android 10+.

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

Хотя это и не совсем исправление, но это был хороший способ выполнить работу. : ))

Boda 23.09.2021 11:54

Привет, ребята, комбинация двух авансеров решила мою проблему. Это было связано с портом.

adb reverse tcp:8088 tcp:8088
react-native run-android --port=8088

Сделав это, приложение отлично загрузилось на моем телефоне, подключенном через USB. Я думаю, что мой AV или Vagrant или что-то еще на моем ПК использовали этот порт.

Вы можете изменить 8088 на что-то другое, если это необходимо.

Наслаждаться!

  1. В моем случае я просто закрываю эмулятор формы приложения

  2. Затем запустите это снова

react-native run-android

Это происходит всякий раз, когда устройство Android не может подключиться к серверу метро. Если вышеуказанное не работает, убедитесь, что на вашем устройстве Android не настроен прокси-сервер. (Настройки > Прокси > Без прокси).

В моем случае Wi-Fi и мобильные данные эмулятора были отключены.

Эта ошибка появилась из ниоткуда у меня и что решило это для меня:

  1. AVD-менеджер в Android Studio
  2. Нажмите стрелку вниз в разделе «Действия» на вашем виртуальном устройстве.
  3. Удалить данные
  4. Перезапустить Метро

Запустите следующие две команды

  1. adb kill-server
  2. adb start-server

После этого запустите команду npm start, а затем обычную зеленую кнопку запуска в студии Android.

Я на Windows 11 и столкнулся с этой проблемой. Убейте и запустите сервер adb, решенный для меня.

Cuong Vo 20.12.2021 09:00

Я попробовал все решения ниже, прокомментированные и отвеченные разными людьми. Иногда это работает, но иногда ни одно решение не работает для меня ..... лучшее решение для этой ошибки удалить APK с физического устройства и снова запустить приложение ... для меня это работает на 100% !!!

шаг 1-

Uninstall APK from physical Device

шаг 2-

Go to Android folder cd android

шаг 3-

Enter Command Gradlew Clean

шаг 4-

Enter Cd.. back to Project

шаг 4-

Run Command npx react-native run-android OR react-native run-android

Возможно ваш порт занят. Попробуйте запустить на другом порту:

adb reverse tcp:6666 tcp:6666
react-native run-android --port 6666

проверьте, свободен ли используемый вами порт

линукс:

lsof | grep LISTEN

окна:

netstat -an

Пожалуйста, проверьте, не использует ли сервер Metro какие-либо другие порты. Если есть, остановите все серверы, затем перезапустите сервер и повторите попытку.

Отключите прокси, если вы установили прокси в студии Android, по умолчанию используйте прокси

Turn off proxy

    this works for me on ubuntu
    
    1. if you are having node version 17 first downgrade its version:-
    You can use n for node's version management.
    
    this is very easy to use.
    $ npm install -g n
    
    then you can show your node version:
    $ node -v
    v16.13.2
    
    2. create an assets folder inside root of the project:-
    project\android\app\src\main\assets
    set folder name should be assets

3. now the final step implement the given code inside the project folder:- 

$cd project 
/project$ react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

4. after following all these step react-native was successfully running on my pc

В моем случае я пытался запустить приложение на эмуляторе. Но я получал это

Этот IP 10.0.2.2 был доступен из браузера эмулятора Chrome. Проблема в том, что этот IP-адрес не занесен в белый список в настройках сетевой безопасности Android. Итак, какой бы IP-адрес вы ни видели, добавьте его в настройки ниже, и все готово.

./android/app/src/main/AndroidManifest.xml

        <application
                android:name = ".MainApplication"
+               android:usesCleartextTraffic = "true"   <- Add this line
                android:allowBackup = "true"
                android:label = "@string/app_name"
                android:icon = "@mipmap/ic_launcher"

./android/app/src/main/res/xml/network_security_config.xml
</network-security-config>
    <domain-config cleartextTrafficPermitted = "true">
        <domain includeSubdomains = "true">localhost</domain>
        <domain includeSubdomains = "true">10.0.1.1</domain>
        <domain includeSubdomains = "true">10.0.2.2</domain>
        <domain includeSubdomains = "true">10.0.3.2</domain>
    </domain-config>
 </network-security-config>

Просто замените <domain includeSubdomains = "true">10.0.2.2</domain> на IP-адрес, указанный в сообщении об ошибке от react-native.

Другие вопросы по теме