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

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

Screenshot

Что я делаю не так?

Ответы (51)

A similar issue happened with me.
Apparently Mcafee blocks 8081 port. Took me hours to figure this out.

Try running:

react-native run-android --port=1234

When app shows up with an error on emulator, get into dev settings (Ctrl+M).

Change the "Debug server host and port for device" to "localhost:1234".

Close the app and start it from the app drawer.

Мое решение:

Запустить сервер Metro

$ 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/getting-started

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

adb reverse tcp:8081 tcp:8081

Почему?

Когда запущен упаковщик RN, в вашем браузере доступен активный веб-сервер по адресу 127.0.0.1:8081. Именно с этого сервера пакет JS для вашего приложения обслуживается и обновляется по мере внесения вами изменений. Без обратного прокси ваш телефон не сможет подключиться к этому адресу.

Все кредиты на Swingline0 .

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

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

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

Примечание: Или, в зависимости от того, где находится adb.exe на вашем компьютере

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

Снова запустить сборку android

$ react-native run-android

Или

$ react-native start

$ react-native run-android

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

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


[...]

РЕДАКТИРОВАТЬ: Будьте осторожны, это должно быть false на производстве для безопасности вашего приложения

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

For me this problem started with upgrading react-native. The upgrade was necessary to add 64-bit support.

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

Also, One important change that I made for the upgrade was in ../android/build/build.gradle

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

I had to change the targetSdkVersion from 27 to 28 following warning when I tried to upload the build(.apk) to goole play console. Little did i realise that this was the root cause of the above error for me. Immediatly answers by @tom and @tinmarfrutos made absolute sense.

I solved the problem by adding android:usesCleartextTraffic="true" to my android/app/src/debug/AndroidManifest.xml

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

Проверить путь к sdk android в Environment Veritable.

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

замените sharedBlacklist на сегмент кода ниже,

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

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

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

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

[Quick Answer]

After try to solve this problem in my workspace I found a solution.

This error is because there are a problem with Metro using some combinations of NPM and Node version.

You have 2 alternatives:

  • Alternative 1: Try to update or downgrade npm and node version.
  • Alternative 2: Go to this file: \node_modules\metro-config\src\defaults\blacklist.js and change this code:

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

    and change to this:

    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.

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

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

  choco uninstall nodejs
  choco install nodejs --version 12.8

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

3- Глобально установить react native с помощью команды

  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 меню -> Настройки -> ADB -> Затем выберите использовать пользовательские инструменты SDK для Android (щелкните "Обзор", чтобы найти расположение SDK)

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

Try These steps if you have tried everything mentioned in above solutions:

  1. Create File in android/app/src/main/assets
  2. Run the following command :

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. Now run your command to build for e.g. react-native run-android

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

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

    // ADD THESE THREE

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

РН: 0,61,3

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

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

  1. (в каталоге проекта) mkdir android / app / src / main / assets
  2. пакет response-native --platform android --dev false --entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets- дест андроид / приложение / SRC / основной / res
  3. реагировать-native run-android

Вы можете автоматизировать описанные выше шаги, поместив их в скрипты часть 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 из командной строки.

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

Turn off proxy

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

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

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

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

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

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

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

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

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

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

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

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

Linux:

lsof | grep LISTEN

окна:

netstat -an

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.npm start inside the project

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

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

реагировать-родной run-android

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

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

просто добавьте три всплеска: 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__\/.*/
]; 

My code example

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

npm start

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

react-native run-android

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

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

Эта ошибка возникла для меня из ниоткуда, и для меня ее решило:

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

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

  1. Четкие часы сторожа: сторожевые часы-дель-все.
  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 - *

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

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

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

! Android / app / src / debug

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

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

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

ADB обратный TCP: 8081 TCP: 8081

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

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

  1. установка npm
  2. запуск реакции-родной
  3. реагировать-родной run-android

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


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

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

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

При необходимости вы можете заменить 8088 на другой.

Наслаждайтесь!

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

  1. Удалить папки Android и IOS
  2. запустить React-native eject
  3. запустить react-native run-android

Может быть, после предыдущих шагов у вас есть запуски npm start - --reset-cache

Работаю, надеюсь вам поможет.

Я сделал: реагировать-родное начало и npx реагировать-родной 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

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

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

npx, начало реакции

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

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

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

В файле 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__\/.*/
];

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

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

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

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



    
    

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

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

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

ИНФОРМАЦИЯ ОБ ОТЛАДКЕ -

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

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

netstat -aon | findstr 8081

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

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

.
react-native run-android --port=9001

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

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

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

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

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

пакет response-native --platform android --dev false --entry-file index.js --bundle-output android / app / src / main / assets / index.android.bundle --assets- Dest android / приложение / SRC / основной / res

Шаг 3: Создайте свой APK: run-android с реагированием

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

Наслаждайтесь :)

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

шаг 1-

Удалить APK с физического устройства

шаг 2-

Перейти в папку Android cd android

шаг 3-

Введите команду Gradlew Clean

шаг 4-

Введите Cd .. назад в Project

шаг 4-

Выполнить команду npx react-native run-android OR react-native run-android

2022 WebDevInsider