Що значить «Ні розшарування URL справжні» в зреагувати рідний?


199

Коли я запускаю рідний проект, що реагує на реакцію, я отримую помилку no bundle URL present, але не знаю, які помилки роблю, я сильно розгубився.

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


2
Я зіткнувся з цією проблемою в реагуванні на рідну програму iOS. Просто відкрийте папку xcodeproj в ios в xcode і запустіть її звідти. Переконайтеся, що ви не на проксі.
Абхай Широ

9
Більшу частину часу мені допомагає очищення каталогу rm -rf ios/build/
збірок

Це допомагає мені в більшості ситуацій. Але в цьому конкретному випадку мені вдалося виправити цю помилку за допомогою цієї команди (реагувати-нативно: "0.60.4"):watchman watch-del-all
О. Боркухін

Зазвичай це означає, що ваш постачальник метрополітену не працює, деякі люди це запускають у власних терміналах або на стандартному комп'ютерному терміналі. Зазвичай я закриваю термінал, перезавантажую програму і це виправляє.
Сара Інес Кальдерон

Відповіді:


128

Вирішіть помилку No bundle URL present:

  • Виконайте в кореневому каталозі проекту наступну команду, щоб видалити каталог збірки iOS та знищити інші сеанси React Native (якщо припустити, що вони працюють на порту 8081 за замовчуванням) перед повторним складанням:

rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios

  • Оновіть свій робочий процес React Native, щоб уникнути виникнення цих помилок, поєднавши вищевказану комбінацію команд у псевдонімі та додавши її до вашого файлу конфігурації Bash .bashrc за допомогою цієї команди:

echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc

Тепер ви можете запустити збірку React Native iOS (не турбуючись про деякі поширені червоні екрани помилок, що з’являються) за допомогою простого ярлика:

rni


1
Дуже корисно для мене. Єдине, що мені довелося зробити - це покинути тренажер, якщо він ще не закритий.
AnnawanDev

74

Я просто зіткнувся з цією проблемою (вперше розпочавши роботу з React Native). Проблема зникла, коли - під час ios-симуляції ( react-native run-ios) працював - я побіг, npm installа потім react-native run-iosзнову. У вікні терміналу було показано, що воно в'язане, а потім тренажер показав вітальний екран.

Перевірте це посилання на інструменти після react-native init PropertyFinderспроби використання рядка npm start(Цей для мене працює)

===================================================== =======================

ОНОВЛЕННЯ за 16.9

Мій порт 8081 був заблокований McAfee. Використання іншого порту безпосередньо не працювало react-native start --port=8082іreact-native run-ios --port=8082

Випробували майже всі рішення, наведені тут. але нічого не вийшло.

        "react": "16.9.0",
        "react-dom": "^16.12.0",
        "react-native": "0.61.5",

Рішення:

Шукали 8081 в Xcode і замінили їх на 8082. Потім запустіть ті самі команди, щоб створити та запустити додаток. Додаток працює безперебійно

react-native start --port=8082
react-native run-ios --port=8082

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


2
@dcp Ви вже кілька разів намагалися запустити "реактивний запуск run-ios", поки він уже завантажений? Схоже, щоразу, коли я закручую додаток, мені потрібно це робити щонайменше двічі (між ними чекаючи приблизно 2 хвилини).
Пропустити Суву

працює для мене, але хотілося б знайти довгострокове виправлення, яке не передбачало цього кроку кожного разу.
mheavers

31

Була така ж проблема, коли я робив пакет своєї програми. Переконайтеся, що ваш main.jsbundleнацілений на ваш основний проект


3
Це якимось чином трапилося зі мною як частина мого модернізованого оновлення 0,60.
IonicBurger

відео посилання для того ж, youtube.com/watch?v=eCs2GsWNkoo
jrhamza

це сталося і зі мною. але потім я натиснув на нього. але все-таки випуск
Джейсон Г

29

Як зазначено в повідомленні про помилку:

Погодившись на ліцензію Xcode / iOS, потрібні права адміністратора, будь ласка, запустіть "sudo xcodebuild -license" та повторіть цю команду.

Запуск наступної команди працював:

sudo xcodebuild -license

tks це робота для мене після запуску в терміналі та побудови в xcode after
tess hsu

Ні. Все ще не працює для мене. Я біжу в інший порт, 8081 заблокований
Ashish Singh Rawat

27

Ця проблема виникає, коли ви не дозволяєте незахищених з'єднань через localhost або, можливо, ви намагалися прийняти незахищені з'єднання через http.

Щоб виправити це, додайте це info.plist:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>

4
Який герой цей хлопець. Врятувало мене та мою книжку з вистрибування у вікно! Я змінив свій домен виключення з localhostмоєї адреси локальної мережі в Info.plist, а значить, він не вирішив. Я додав блок для "localhost" як домен виключення, і він спрацював.
Дарій

1
Серйозно ваша відповідь прийшла як бог до мене .... брате, ти качаєшся ..... У мене немає слів. дякую, я застряг у ньому з четверга.
Тушар Пандей

26

Закрийте ваш тренажер та термінал. Відкрийте нову та перейдіть до свого проекту, а потім оновіть свою реакцію:

react-native upgrade

Випуск у: Нескінченна рекурсія в RCTFatal, коли пакет не виконується .


1
так, але в моєму випадку мені не потрібно було оновлювати. Замикаючий термінал і тренажер мені вистачило.
gianni

@gianni Яку версію ви робите, коли ви реалізуєтесь?
Матео Марконі

1
Здавалося, нічого не змінило, все ще бачачи помилку.
SSH Цього

2
Це працювало для мене, але вам доведеться також закрити тренажер, а потім запустити реактивний цикл run - ios
James O'Brien

1
Не допомогла `` `інформація. Немає версії. Отримання останнього ... попередження Вказана версія "0.61.5" вже встановлена ​​у node_modules, і вона задовольняє діапазон север "0.61.5". Не потрібно оновлювати `` `
Ashish Singh Rawat

19

Причина:

Це тому, що додаток не може знайти сервер (який обслуговує інтерфейс користувача - за допомогою коду JavaScript).

Рішення:

  • Переконайтесь, що все, що стосується реагування на рідну мову, закрито (не потрібно, просто щоб мати чистий початок для мого рішення, після мого пояснення, ви можете зрозуміти, потрібно це чи ні)
  • бігати npm run startчи yarn startспочатку
  • зачекайте, коли ця команда виконана робота (зазвичай ви побачите Loading dependency graph, done.)
  • бігати react-native run-ios/android

Пояснення:

  • React Native постачається з 2 частин:

    • Рідна частина
    • Частина Javascript
  • Створення команд:

    • react-native run-ios/androidполягає в тому, щоб створити нативну частину, потім розгорнути її на пристрої та запустити додаток на пристроях (симулятор / емулятор / реальний пристрій). Зазвичай на це пішло 3 ~ 4 хвилини.

    • npm run startабо yarn startце створити частину javascript і запустити сервер розробників для обслуговування вбудованого інтерфейсу в додаток. Зазвичай на це пішло 30 секунд.

=> Зазвичай частина JavaScript закінчується спочатку, а рідна частина - пізніше. (виходячи з часу, який вони використовували).

=> це справедливо лише при першій збірці (свіжа збірка).

=> для відновлення:

  • Нативній частині просто було потрібно 10 ~ 15 секунд, щоб перевірити зміни, і тому що жодна зміна для рідної частини => не робилася до того, як частина Java була створена та обслуговувалася. (Я не впевнений, що частина JavaScript була відновлена ​​чи ні, але це зайняло багато часу, ніж рідна частина)

  • Отож, тому у нас виникла ця проблема, програма запущена і потрібна річ, яка ще не існувала.

Бонус:

  • react-native run-ios/android автоматично запустить сервер розробників для вас.
  • Ось чому, коли ви побігли react-native run-ios/androidодразу react-native init <app_name>, все пройшло добре. (тому що функція автоматичного запуску та час для свіжої збірки було взято як стан вище).
  • Інші рішення "для видалення" працювали, оскільки вони примушували відбудовуватися.

Час, використаний на цю відповідь, був відносно моєї машини => може відрізнятися від інших.


14

Спробуйте запустити цей код:

$ sudo xcodebuild -license

Це може вирішити проблему. Це працює для мене.


11

У мене була така ж помилка, і я зміг запустити додаток лише через Xcode. react-native run-iosне працює. Щоб вирішити проблему, потрібно видалити buildпапку на YOUR_PROJECT/ios/build/. Після цього ви зможете запустити додаток react-native run-iosзаново. Сподіваюсь, це допомагає.


9

У більшості випадків ця проблема виникає, коли пошук DNS / IP-пошуку не вдається знайти localhost.

Рішення:

Спробуйте додати localhost ip до хост-файлу тощо.

ви можете додати рядки нижче до файлу хоста etc (/ etc / hosts)

127.0.0.1 localhost

255.255.255.255 радіомовлення

:: 1 л. окалхост

Для підтвердження цього питання ви можете натиснути на URL-адресу пакета на сафарі (якщо ви спробуєте його в хромі, це вирішиться, але сафарі не зможе його вирішити). http: // localhost: 8081 / index.ios.bundle? platform = ios & dev = true & minify = false


Після переходу на абсолютно новий комп’ютер це було те, що мені було потрібно. ТИ!
jeffctown

Так, тут на новому комп’ютері!
Вішал

Моєю проблемою було встановлення проксі в моїй мережевій конфігурації, я просто видаляю проксі, і він працює добре.
Ахмад Хані

8

Переконайтесь, що ваші налаштування ATS правильні у .plist-файлі.

Ви можете знайти файл за адресою /ios/{{project_name}}/Info.plist

localhost повинен бути визначений як ціль запиту винятків, як це:

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

* (не забудьте видалити це у версії випуску ..)


7

Для мене проблема полягає в тому, що він не міг створити пакет JS. Він не вказує на помилку при побудові з Xcode, тому ви не можете це знати. Щоб знайти помилку, запустіть наступну команду.

react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle

Для мене помилка була в чомусь із відсутнім компонентом PureRenderMixin. З яким рішенням можна ознайомитися тут: https://github.com/facebook/react-native/isissue/13078 . Потрібно вручну встановити react@16.0.0-alpha.3. Це можна зробити за допомогою виконання цієї команди.

npm i --save react@16.0.0-alpha.3

Ця проблема зараз трапляється для всіх, оскільки випускаються новіші версії реагуючих альфа (особливо альфа 5), і вони порушують вбудовані реакції.


команда 'react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/ main.jsbundle 'опише будь-яку помилку при складанні пакету. поки ця команда не буде успішною, run-ios не працюватиме
eric f.

моя поточна помилка в тому, що "@connect" "react-redux" якимось чином не розпізнається?
eric f.

Можливо, спробуйте додати "plugins": ["transform-decorators-legacy"]до файлу .babelrc. Або спробуйте підключити HOC.
urbancvek

@urbancvek, для мене помилка полягає в цьому The node type SpreadProperty has been renamed to SpreadElementі в його @babelбібліотеці посилань всередині node_modules, я не знайшов нічого, що би вирішило це.
Даніель

7

Рішення -> npm startтоді відкрийте новий Термінал і перейдіть до свого шляху проекту, а потім натисніть, щоб react-native run-iosвін працював на мене


7

Що це вирішило для мене:

  • Відкрийте вікно терміналу
  • cd в YOUR_PROJECT/ios
  • Видаліть папку збірки за допомогою rm -r build
  • Біжи react-native run-iosзнову

Можна також відкрити Finder, перейти до YOUR_PROJECT/iosта видалити buildпапку.

Потім react-native run-iosзнову біжи .

Джерело: Ендрю Банкрофт


5

Це проблема з нативною реакцією v0.42.1. Спробуйте закрити всі екземпляри терміналу та XCode та запустіть:

launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios

3
"Це проблема з нативною реакцією v0.42.1." - Вона існує і з v.0.43.
dcp


5

Просто запустіть у Терміналі react-native start:

cd your react native app directory/ react-native start 

Він запустить пакувач, тепер не закривайте це вікно терміналу, в іншому вікні терміналу запустіть проект. Це єдине прагнення, яке я виявив, щоб він працював належним чином.


4

Я знайшов найпростіший / швидкий спосіб обійти це - вийти з програми в симуляторі (2 х Cmd + Shift + H) і повторно запустити.


4

У мене був цей самий випуск. Але моя проблема полягала в тому, що мої Mac та iPhone не були в одній мережі Wi-Fi.

Тому переконайтеся, що вони всі в одній мережі та відновіться ще раз. Якщо це не так, спробуйте рішення, згадані іншими членами тут.


3

перевірити мережевий проксі, краще закрити його.

або ви повинні знайти інший спосіб підтримки сервера упаковки


Дякую, я відкрив глобальну VPN, щоб перетнути Велику вогневу стіну!
BaiJiFeiLong

Я відключив автоматичну конфігурацію проксі в Mac. Це спрацювало через 2 дні зусиль: D ... Спасибі.
Нірав Джайн

Я справді працював з VPN, якого навіть не пам’ятав. його вимкнення спрацювало!
Педро Маркес

3

Це сталося і зі мною, після перезавантаження мого Mac. Під час запуску програми на тренажері відкривається вікно терміналу запускаПакер. Я закрив це вікно і припинив процес (я також закрив тренажер), після чого запустіть знову реагувати-нативні run-ios і все працює добре.


3

У моєму випадку проблема була усунена перезавантаженням adbсервера:adb kill-server && adb start-server


3

У мене ця проблема сталася і для мене ... проблема в тому, що пакувач не працював, здавалося, ймовірно, тому, що моя оболонка за замовчуванням була zsh. шини реагують, щоб відкрити нове вікно терміналу та запустити, .../node_modules/react-native/packager/launchPackager.commandале це не запустилось. Ручне виконання, що (і підтримує його функціонування) виправило це для мене.


3

перевірте свій ключ "localhost" на сторінці NSExceptionDomains у info.plist

якщо його не існує, це спричиняє помилку.


2

Припустимо, що ви використовуєте nvmта встановлено кілька версій вузла, ось таке рішення:

  1. Скажіть , що ви працюєте npm install -g react-native-cliвnode v6.9.5 .
  2. Тепер зробіть node v6.9.5 за замовчуванням запускnvm alias default 6.9.5
  3. Тепер біжи react-native run-ios

Проблема полягає в тому, що у вас встановлено кілька версій вузла через nvmі для встановлення react-native-cliви переключились або встановили останню версію вузла, яка ще не позначена як вузол за замовчуванням, на який слід вказати nvm. Після запуску react-native run-iosце відкриває ще одне нове вікно терміналу, в якому за замовчуванням nvmне вказано версію вузла, де ви встановили react-native-cli. Просто дотримуйтесь наведених вище налаштувань, я сподіваюся, що це допоможе.


2

переконайтеся, що у вашому проекті є .jsbundle

Додайте

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

у власному коді реакції спробуйте знову відкрити проект


1

Я працюю RN 0.49.5. Я спробував безліч методів, але ніхто не працює. Нарешті я опрацював це. Це просто і легко.

Основна ідея - змінити localhostна 127.0.0.1, але це не те, де вам каже RN. Це в RCTBundleURLProvider.m # - (BOOL) isPackagerRunning: (NSString *) хост .

Зміни коду: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; це нормально для тренажера. Якщо це пристрій, просто змініть ip-адресу на свою машину.


Не могли б ви детальніше розглянути своє рішення?
Ашіш Сінгх Рават

1

Ще одна річ, яка працює для мене, - це відкрити проект у xcode, а потім очистити та створити його. зазвичай це перезавантажує пакувальний сервер і вирішує проблему.


1

Виконай нижче команду:

killall -9 node
rm -rf ios/build
react-native run-ios

він відкриє startpackager.command і додаток встановиться на тренажері ios


0

Переконайтеся, що launchPackage.commandви працюєте в терміналі та спробуйте запустити ще раз. Це побудує розшарування. Це як би webpack-dev-сервер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.