Коли я запускаю рідний проект, що реагує на реакцію, я отримую помилку no bundle URL present
, але не знаю, які помилки роблю, я сильно розгубився.
rm -rf ios/build/
watchman watch-del-all
Коли я запускаю рідний проект, що реагує на реакцію, я отримую помилку no bundle URL present
, але не знаю, які помилки роблю, я сильно розгубився.
rm -rf ios/build/
watchman watch-del-all
Відповіді:
Вирішіть помилку No bundle URL present
:
rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc
Тепер ви можете запустити збірку React Native iOS (не турбуючись про деякі поширені червоні екрани помилок, що з’являються) за допомогою простого ярлика:
rni
Я просто зіткнувся з цією проблемою (вперше розпочавши роботу з 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
Була така ж проблема, коли я робив пакет своєї програми. Переконайтеся, що ваш main.jsbundle
націлений на ваш основний проект
Як зазначено в повідомленні про помилку:
Погодившись на ліцензію Xcode / iOS, потрібні права адміністратора, будь ласка, запустіть "sudo xcodebuild -license" та повторіть цю команду.
Запуск наступної команди працював:
sudo xcodebuild -license
Ця проблема виникає, коли ви не дозволяєте незахищених з'єднань через localhost або, можливо, ви намагалися прийняти незахищені з'єднання через http.
Щоб виправити це, додайте це info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
localhost
моєї адреси локальної мережі в Info.plist, а значить, він не вирішив. Я додав блок для "localhost" як домен виключення, і він спрацював.
Закрийте ваш тренажер та термінал. Відкрийте нову та перейдіть до свого проекту, а потім оновіть свою реакцію:
react-native upgrade
Випуск у: Нескінченна рекурсія в RCTFatal, коли пакет не виконується .
Причина:
Це тому, що додаток не може знайти сервер (який обслуговує інтерфейс користувача - за допомогою коду JavaScript).
Рішення:
npm run start
чи yarn start
спочаткуLoading dependency graph, done.
)react-native run-ios/android
Пояснення:
React Native постачається з 2 частин:
Створення команд:
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>
, все пройшло добре. (тому що функція автоматичного запуску та час для свіжої збірки було взято як стан вище).Час, використаний на цю відповідь, був відносно моєї машини => може відрізнятися від інших.
Спробуйте запустити цей код:
$ sudo xcodebuild -license
Це може вирішити проблему. Це працює для мене.
У більшості випадків ця проблема виникає, коли пошук 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
Переконайтесь, що ваші налаштування 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>
* (не забудьте видалити це у версії випуску ..)
Для мене проблема полягає в тому, що він не міг створити пакет 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), і вони порушують вбудовані реакції.
"plugins": ["transform-decorators-legacy"]
до файлу .babelrc. Або спробуйте підключити HOC.
The node type SpreadProperty has been renamed to SpreadElement
і в його @babel
бібліотеці посилань всередині node_modules
, я не знайшов нічого, що би вирішило це.
Рішення ->
npm start
тоді відкрийте новий Термінал і перейдіть до свого шляху проекту, а потім натисніть, щоб
react-native run-ios
він працював на мене
Що це вирішило для мене:
cd
в YOUR_PROJECT/ios
rm -r build
react-native run-ios
зновуМожна також відкрити Finder, перейти до YOUR_PROJECT/ios
та видалити build
папку.
Потім react-native run-ios
знову біжи .
Джерело: Ендрю Банкрофт
Це проблема з нативною реакцією v0.42.1. Спробуйте закрити всі екземпляри терміналу та XCode та запустіть:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
спочатку закрийте тренажер, а потім запустіть їх на терміналі
npm install
react-native run-ios
Просто запустіть у Терміналі react-native start
:
cd your react native app directory/ react-native start
Він запустить пакувач, тепер не закривайте це вікно терміналу, в іншому вікні терміналу запустіть проект. Це єдине прагнення, яке я виявив, щоб він працював належним чином.
Я знайшов найпростіший / швидкий спосіб обійти це - вийти з програми в симуляторі (2 х Cmd + Shift + H
) і повторно запустити.
У мене був цей самий випуск. Але моя проблема полягала в тому, що мої Mac та iPhone не були в одній мережі Wi-Fi.
Тому переконайтеся, що вони всі в одній мережі та відновіться ще раз. Якщо це не так, спробуйте рішення, згадані іншими членами тут.
перевірити мережевий проксі, краще закрити його.
або ви повинні знайти інший спосіб підтримки сервера упаковки
У моєму випадку проблема була усунена перезавантаженням adb
сервера:adb kill-server && adb start-server
У мене ця проблема сталася і для мене ... проблема в тому, що пакувач не працював, здавалося, ймовірно, тому, що моя оболонка за замовчуванням була zsh. шини реагують, щоб відкрити нове вікно терміналу та запустити, .../node_modules/react-native/packager/launchPackager.command
але це не запустилось. Ручне виконання, що (і підтримує його функціонування) виправило це для мене.
перевірте свій ключ "localhost" на сторінці NSExceptionDomains у info.plist
якщо його не існує, це спричиняє помилку.
Припустимо, що ви використовуєте nvm
та встановлено кілька версій вузла, ось таке рішення:
npm install -g react-native-cli
вnode v6.9.5
. node v6.9.5
за замовчуванням запускnvm alias default 6.9.5
react-native run-ios
Проблема полягає в тому, що у вас встановлено кілька версій вузла через nvm
і для встановлення react-native-cli
ви переключились або встановили останню версію вузла, яка ще не позначена як вузол за замовчуванням, на який слід вказати nvm
. Після запуску react-native run-ios
це відкриває ще одне нове вікно терміналу, в якому за замовчуванням nvm
не вказано версію вузла, де ви встановили react-native-cli
. Просто дотримуйтесь наведених вище налаштувань, я сподіваюся, що це допоможе.
переконайтеся, що у вашому проекті є .jsbundle
Додайте
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
у власному коді реакції спробуйте знову відкрити проект
Я працюю 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-адресу на свою машину.
Ще одна річ, яка працює для мене, - це відкрити проект у xcode, а потім очистити та створити його. зазвичай це перезавантажує пакувальний сервер і вирішує проблему.
Виконай нижче команду:
killall -9 node
rm -rf ios/build
react-native run-ios
він відкриє startpackager.command і додаток встановиться на тренажері ios