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

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

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

Я полностью сбит с толку, что я делаю не так.


Изменить: добавление скриншота ошибки

67 ответов

Вы еще не запустили пакет Бежать npm start или же react-native start в корне прямо перед вашим проектом react-native run-android

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

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

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

Шаг 2: переименовать index.android.js в index.js:

Команда 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

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

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

ADB обратный протокол:8081 протокол:8081

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

все кредиты для Swingline0

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

Попробуй запустить реакцию-нативный run-android --port=1234

Как только приложение отобразится в эмуляторе с ошибкой, перейдите в настройки dev (доступны по нажатию crtl+M)

Измените "Отладочный хост-сервер и порт для устройства" на "localhost:1234"

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

надеюсь, это вам тоже поможет!!

Для меня эта ошибка была вызвана обновлением реагировать на родной

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

Если вы посмотрите обновление diff, вам нужно создать манифест отладки. 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>

См. Для получения дополнительной информации: /questions/37330690/android-8-otkryityij-http-trafik-ne-razreshen/37330703#37330703

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

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

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

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

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

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

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

Сначала выполните шаги 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)

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

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

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

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

Эта ошибка возникает из-за проблемы с 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__\/.*/
    ];
    

    Обратите внимание, что если вы запустите npm install или yarn install вам нужно снова изменить код.

Я столкнулся с таким же вопросом, а вслед за Реагировать 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 из командной строки каждый раз.

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

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

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

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

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

  1. npm install
  2. реагировать-родное начало
  3. реагировать на запуск Android

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

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

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

npm start

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

react-native run-android

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

Этот 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.

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

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

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

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

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

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

npx реагирует на родное начало

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

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

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

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

    // ADD THESE THREE

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

РН: 0,61,3

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

В моем случае я понимаю, что ошибка только что происходит в версии реакции 0,60 с версией узла 12,6.

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

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

$ react-native start

Запустить Android

$ react-native run-android

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

$ react-native start

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

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

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

adb reverse tcp:8081 tcp:8081

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

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

добавлятьANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdkв системной переменной
и C:\Users\user_name\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

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

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

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

У меня возникла та же проблема, проблема для меня заключалась в том, что 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

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

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

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

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

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

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

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

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

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

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

https://s tackru.com/images/090df91b367a583aca36a75486608a2379c14f73.png

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

!android/app/src/debug

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

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

  1. Создать файл в 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-dest android/app/src/main/res

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