Khi tôi chạy một dự án có nguồn gốc phản ứng, tôi gặp lỗi no bundle URL present
, nhưng tôi không biết mình mắc lỗi gì, tôi đã rất bối rối.
rm -rf ios/build/
watchman watch-del-all
Khi tôi chạy một dự án có nguồn gốc phản ứng, tôi gặp lỗi no bundle URL present
, nhưng tôi không biết mình mắc lỗi gì, tôi đã rất bối rối.
rm -rf ios/build/
watchman watch-del-all
Câu trả lời:
Giải quyết lỗi No bundle URL present
bằng cách:
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
Giờ đây, bạn có thể chạy React Native iOS build (mà không phải lo lắng về một số màn hình lỗi đỏ phổ biến xuất hiện) bằng một phím tắt bí danh đơn giản:
rni
Tôi cũng gặp vấn đề này (lần đầu tiên bắt đầu với React Native). Vấn đề biến mất khi - trong khi một mô phỏng ios ( react-native run-ios
) đang chạy - tôi chạy npm install
và sau đó react-native run-ios
một lần nữa. Trong cửa sổ terminal, nó hiển thị rằng nó đang được đóng gói, và sau đó trình giả lập hiển thị màn hình chào mừng.
Kiểm tra liên kết này để biết tóm tắt sau khi react-native init PropertyFinder
thử sử dụng dòng npm start
này (Cái này hoạt động với tôi)
================================================== ======================
CẬP NHẬT cho 16.9
Cổng 8081 của tôi đã bị chặn bởi McAfee. Sử dụng một cổng khác trực tiếp không hoạt động react-native start --port=8082
vàreact-native run-ios --port=8082
Đã thử gần như tất cả các giải pháp được đưa ra ở đây. nhưng bất cứ điều gì đã không làm việc.
"react": "16.9.0",
"react-dom": "^16.12.0",
"react-native": "0.61.5",
Giải pháp:
Tìm kiếm 8081 trong Xcode và thay thế tất cả chúng bằng 8082. Sau đó chạy các lệnh tương tự để xây dựng và chạy ứng dụng. Ứng dụng hoạt động trơn tru
react-native start --port=8082
react-native run-ios --port=8082
Có vấn đề tương tự khi tôi đã đóng gói ứng dụng của tôi. Kiểm tra xem main.jsbundle
mục tiêu của bạn có được nhắm đến Dự án chính của bạn không
Theo hướng dẫn trong thông báo lỗi:
Đồng ý với giấy phép Xcode / iOS yêu cầu quyền quản trị viên, vui lòng chạy "sudo xcodebuild -license" và sau đó thử lại lệnh này.
Chạy lệnh sau hoạt động:
sudo xcodebuild -license
Sự cố này xảy ra khi bạn không cho phép kết nối không an toàn qua localhost hoặc có thể bạn đã cố chấp nhận kết nối không an toàn qua http.
Để khắc phục điều này, hãy thêm nó vào info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
localhost
địa chỉ mạng cục bộ của mình trong Info.plist và do đó nó không được giải quyết. Tôi đã thêm một khối cho 'localhost' như một miền ngoại lệ và nó đã hoạt động.
Đóng trình giả lập của bạn và thiết bị đầu cuối. Mở cái mới và đi đến dự án của bạn, sau đó nâng cấp nguồn gốc phản ứng của bạn như thế này:
react-native upgrade
Vấn đề trong: Đệ quy vô hạn trong RCTFirth khi gói không thực thi .
Lý do:
Điều này là do ứng dụng không thể tìm ra máy chủ (phục vụ UI - bằng mã javascript).
Giải pháp:
npm run start
hoặc yarn start
đầu tiênLoading dependency graph, done.
)react-native run-ios/android
Giải trình:
React Native đi kèm với 2 phần:
Xây dựng lệnh:
react-native run-ios/android
là để xây dựng phần gốc sau đó triển khai cho các thiết bị và khởi động ứng dụng trên các thiết bị (giả lập / giả lập / thiết bị thực). Điều này thường mất 3 ~ 4 phút để hoàn thành.
npm run start
hoặc yarn start
là để xây dựng phần javascript và khởi động máy chủ dev để phục vụ UI được xây dựng cho ứng dụng. Điều này thường mất 30 giây để hoàn thành.
=> Thông thường, phần javascript kết thúc trước sau đó phần gốc đến sau. (dựa trên thời gian họ sử dụng).
=> điều này chỉ đúng với lần đầu tiên xây dựng (bản dựng mới).
=> để xây dựng lại:
Phần gốc chỉ mất 10 ~ 15 giây để kiểm tra các thay đổi và vì không có thay đổi nào cho phần gốc => được thực hiện trước khi phần javascript được xây dựng và phục vụ. (Tôi không chắc phần javascript đã được xây dựng lại hay chưa nhưng mất nhiều thời gian hơn phần gốc)
Vì vậy, đó là lý do tại sao chúng tôi gặp sự cố này, ứng dụng đã chạy và yêu cầu điều chưa tồn tại.
Tặng kem:
react-native run-ios/android
sẽ tự động khởi động máy chủ dev cho bạn.react-native run-ios/android
ngay sau đó react-native init <app_name>
, mọi thứ đều chạy tốt. (vì tính năng tự động bắt đầu và thời gian dành cho bản dựng mới như trạng thái ở trên).Thời gian sử dụng cho câu trả lời này liên quan đến máy của tôi => có thể khác với người khác.
Hầu hết các trường hợp sự cố này xảy ra khi tra cứu DNS / tra cứu IP không tìm thấy localhost.
Giải pháp :
Hãy thử thêm ip localhost vào tệp máy chủ vv của bạn.
bạn có thể thêm các dòng dưới đây vào tệp máy chủ vv (/ etc / hosts)
127.0.0.1 localhost
255.255.255.255 Broadcasthost
:: 1 l. ocalhost
Để xác nhận đây là vấn đề bạn có thể nhấn url gói trên safari (nếu bạn thử nó trong chrome, điều này sẽ giải quyết nhưng safari sẽ không thể giải quyết nó). http: // localhost: 8081 / index.ios.bundle? platform = ios & dev = true & minify = false
Hãy chắc chắn rằng cài đặt ATS của bạn là chính xác trong tệp .plist.
Bạn có thể tìm thấy tập tin tại / ios / nb nbproject_name Bologspl / Info.plist
localhost phải được định nghĩa là mục tiêu yêu cầu ngoại lệ như thế này:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
* (đừng quên xóa bản này trên phiên bản phát hành ..)
Đối với tôi, vấn đề là nó không thể tạo ra gói JS. Nó không nêu lỗi khi xây dựng từ Xcode vì vậy không có cách nào để bạn biết điều này. Để tìm lỗi chạy lệnh sau.
react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
Đối với tôi, lỗi là do thiếu thành phần PureRenderMixin. Giải pháp có thể được tìm thấy ở đây: https://github.com/facebook/react-native/issues/13078 . Về cơ bản, bạn phải cài đặt thủ công Reac@16.0.0-alpha.3. Điều này có thể được thực hiện thông qua việc chạy lệnh này.
npm i --save react@16.0.0-alpha.3
Vấn đề này hiện đang xảy ra với mọi người vì các phiên bản mới hơn của bảng chữ cái phản ứng đang được phát hành (đặc biệt là alpha.5) và chúng đang phá vỡ các bản dựng phản ứng gốc.
"plugins": ["transform-decorators-legacy"]
vào tệp .babelrc của bạn. Hoặc thử nó với HOC kết nối.
The node type SpreadProperty has been renamed to SpreadElement
và @babel
thư viện tham chiếu của nó bên trong node_modules
, tôi không tìm thấy gì liên quan đến vấn đề này.
Giải pháp ->
npm start
sau đó mở Terminal mới và đi đến đường dẫn dự án của bạn và sau đó nhấn
react-native run-ios
nó hoạt động với tôi
Điều gì đã giải quyết nó cho tôi:
cd
vào YOUR_PROJECT/ios
rm -r build
react-native run-ios
lạiNgoài ra, bạn có thể mở Finder, điều hướng đến YOUR_PROJECT/ios
và xóa build
thư mục.
Sau đó chạy react-native run-ios
lại.
Nguồn: Andrew Bancroft
Đây là một vấn đề với phản ứng gốc v0.42.1. Cố gắng đóng tất cả các phiên bản terminal và XCode và chạy:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
đầu tiên đóng trình giả lập, sau đó chạy chúng trên thiết bị đầu cuối
npm install
react-native run-ios
Chỉ cần chạy trong Terminal react-native start
:
cd your react native app directory/ react-native start
Nó sẽ khởi động trình đóng gói, bây giờ không đóng cửa sổ đầu cuối này, trong một cửa sổ đầu cuối khác chạy dự án của bạn. Đây là mong muốn duy nhất mà tôi tìm thấy để làm cho nó hoạt động đúng.
Tôi đã tìm thấy cách dễ nhất / nhanh nhất để vượt qua điều này là thoát khỏi ứng dụng trong trình giả lập (2 x Cmd + Shift + H
) và khởi chạy lại.
tôi đã có vấn đề tương tự. Nhưng vấn đề của tôi là máy Mac và iPhone của tôi không cùng mạng wifi.
Vì vậy, đảm bảo rằng tất cả chúng trong cùng một mạng và xây dựng lại một lần nữa. Nếu đây không phải là trường hợp, hãy thử các giải pháp được đề cập bởi các thành viên khác ở đây.
kiểm tra proxy mạng của bạn, tốt hơn là tắt nó đi.
hoặc bạn nên tìm một cách khác để duy trì máy chủ đóng gói
Nó cũng đã xảy ra với tôi, sau khi khởi động lại máy mac của tôi. Có một cửa sổ thiết bị đầu cuối launchPackager mở ra khi bạn chạy ứng dụng của mình trên trình giả lập. Tôi đã đóng cửa sổ đó và chấm dứt quá trình (tôi cũng đã giả lập trình giả lập), sau đó chạy lại run-ios tự nhiên và mọi thứ đều hoạt động tốt.
Trong trường hợp của tôi, sự cố đã được khắc phục bằng cách khởi động lại adb
máy chủ:adb kill-server && adb start-server
Tôi cũng có vấn đề này xảy ra với tôi ... vấn đề là trình đóng gói không chạy có vẻ như vì shell mặc định của tôi là zsh. lốp xe phản ứng để mở một cửa sổ thiết bị đầu cuối mới và chạy .../node_modules/react-native/packager/launchPackager.command
nhưng điều này đã không chạy. Chạy thủ công mà (và giữ cho nó chạy) đã sửa lỗi này cho tôi.
kiểm tra khóa 'localhost' của bạn tại NSExceptionDomains dict trong info.plist
nếu nó không tồn tại, nó gây ra lỗi.
Giả sử rằng bạn đang sử dụng nvm
và cài đặt nhiều phiên bản nút, đây là giải pháp:
npm install -g react-native-cli
vào node v6.9.5
. node v6.9.5
mặc định bằng cách chạynvm alias default 6.9.5
react-native run-ios
Vấn đề là, bạn có nhiều phiên bản nút được cài đặt qua nvm
và để cài đặt, react-native-cli
bạn đã chuyển đổi hoặc cài đặt phiên bản nút mới nhất, chưa được đánh dấu là nút mặc định để trỏ nvm
đến. Khi bạn chạy, react-native run-ios
điều này sẽ mở ra một cửa sổ đầu cuối mới khác, trong đó mặc định nvm
không được trỏ đến phiên bản nút nơi bạn đã cài đặt react-native-cli
. Chỉ cần làm theo các thiết lập ở trên, tôi hy vọng rằng sẽ giúp.
đảm bảo bạn có .jsbundle trong dự án của bạn
Thêm vào
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
trong mã phản ứng của bạn cố gắng mở lại dự án
Tôi đang làm việc với RN 0.49.5
. Tôi đã thử rất nhiều phương pháp, nhưng không ai làm việc cả. Cuối cùng tôi đã làm việc này. Thật đơn giản và dễ dàng.
Ý tưởng chính là thay đổi localhost
thành 127.0.0.1
, nhưng đó không phải là nơi RN nói với bạn. Nó có trong RCTBundleURLProvider.m # - (BOOL) isPackagerRucky: (NSString *) host .
Thay đổi mã:
oc
- NSString *host = ipGuess ?: @"localhost";
+ NSString *host = ipGuess ?: @"127.0.0.1";
Điều này là ok cho giả lập. Nếu đó là thiết bị, chỉ cần thay đổi địa chỉ IP thành máy của bạn.
một điều khác làm việc cho tôi, là mở dự án trong xcode, sau đó dọn dẹp và xây dựng nó. thông thường nó chạy lại máy chủ đóng gói và giải quyết vấn đề.
Thực hiện lệnh dưới đây:
killall -9 node
rm -rf ios/build
react-native run-ios
nó sẽ mở launchpackager.command và ứng dụng sẽ cài đặt trên trình giả lập ios
Hãy chắc chắn rằng launchPackage.command
đang chạy trong một thiết bị đầu cuối và thử chạy lại. Nó sẽ xây dựng các gói. Nó giống như webpack-dev-server.