Ý nghĩa của 'Không có URL gói nào' trong phản ứng gốc?


199

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.

nhập mô tả hình ảnh ở đây


2
Tôi gặp phải vấn đề này trong phản ứng ứng dụng iOS gốc. Chỉ cần mở xcodeproj trong thư mục ios trong xcode và chạy nó từ đó. Hãy chắc chắn rằng bạn không ở trên proxy.
Abhay Shiro

9
Hầu hết thời gian, xóa thư mục xây dựng giúp tôirm -rf ios/build/
onmyway133

Điều đó giúp tôi trong hầu hết các tình huống. Nhưng trong trường hợp cụ thể này, tôi đã có thể sửa lỗi này bằng lệnh này (Reac -igen: "0.60.4"):watchman watch-del-all
O. Borcuhin

Điều này thường có nghĩa là trình đóng gói tàu điện ngầm của bạn không chạy, một số người chạy nó trong các thiết bị đầu cuối của riêng họ hoặc trên thiết bị đầu cuối máy tính tiêu chuẩn. Tôi thường đóng thiết bị đầu cuối, khởi động lại ứng dụng và sửa nó.
Sara Inés Calderón

Câu trả lời:


128

Giải quyết lỗi No bundle URL presentbằng cách:

  • Chạy lệnh sau trong thư mục gốc dự án của bạn để xóa thư mục bản dựng iOS và để giết các phiên React Native khác (giả sử chúng đang chạy trên cổng mặc định 8081) trước khi xây dựng lại:

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

  • Cập nhật quy trình công việc React Native của bạn để tránh những lỗi này xảy ra bằng cách kết hợp tổ hợp các lệnh trên vào bí danh và thêm nó vào tệp cấu hình Bash của bạn .bashrc với lệnh này:

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


1
Rất hữu ích cho tôi. Điều khác duy nhất tôi phải làm là thoát khỏi trình giả lập nếu chưa đóng.
AnnawanDev

74

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 installvà sau đó react-native run-iosmộ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 PropertyFinderthử sử dụng dòng npm startnà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=8082react-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

nhập mô tả hình ảnh ở đây


2
@dcp Bạn đã thử chạy "Reac -igen run-ios" nhiều lần trong khi nó đã được khởi động chưa? Có vẻ như mỗi lần tôi quay ứng dụng lên, tôi cần thực hiện ít nhất hai lần (chờ khoảng 2 phút mỗi lần).
Bỏ qua Suva

làm việc cho tôi, nhưng rất thích tìm một bản sửa lỗi dài hạn không liên quan đến bước này mỗi lần.
mapsvers

31

Có vấn đề tương tự khi tôi đã đóng gói ứng dụng của tôi. Kiểm tra xem main.jsbundlemục tiêu của bạn có được nhắm đến Dự án chính của bạn không


3
Điều này bằng cách nào đó đã xảy ra với tôi như là một phần của nâng cấp 0,60 gốc phản ứng của tôi.
IonicBurger

liên kết video cho cùng, youtube.com/watch?v=eCs2GsWNkoo
jrhamza

điều này cũng xảy ra với tôi nhưng sau đó tôi nhấp vào nó. nhưng vẫn cùng một vấn đề
Jason G

29

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

tks đây là công việc cho tôi sau khi chạy trong terminal và xây dựng xcode sau
tess hsu

Không. Vẫn không làm việc cho tôi. Tôi đang chạy ở một cảng khác, 8081 bị chặn
Ashish Singh Rawat

27

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>

4
Thật là một anh hùng anh chàng này. Cứu tôi và macbook của tôi khỏi nhảy ra khỏi cửa sổ! Tôi đã thay đổi tên miền ngoại lệ của mình từ 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.
Darius

1
Nghiêm túc mà nói câu trả lời của bạn đến như thần với tôi .... anh bạn đá ..... Tôi không có lời. cảm ơn bạn, tôi bị mắc kẹt trong đó từ thứ năm.
Tushar Pandey

26

Đó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 .


1
có, nhưng trong trường hợp của tôi, tôi không cần phải nâng cấp. Đóng thiết bị đầu cuối và giả lập là đủ cho tôi.
gianni

@gianni Hiện tại bạn đang chạy phiên bản Reac -igen nào?
Mateo Marconi

1
Dường như không có sự khác biệt nào, vẫn thấy lỗi.
SSH này vào

2
Điều này hiệu quả với tôi, nhưng bạn cũng phải đóng trình giả lập và sau đó chạy run-ios bản địa
James O'Brien

1
Không giúp `` `thông tin Không có phiên bản nào được thông qua. Tìm nạp mới nhất ... cảnh báo Phiên bản được chỉ định "0.61.5" đã được cài đặt trong node_modules và nó đáp ứng phạm vi semver "0.61.5". Không cần nâng cấp `` `
Ashish Singh Rawat

19

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:

  • Hãy chắc chắn rằng tất cả mọi thứ liên quan đến phản ứng khép kín (không cần thiết, chỉ cần có khởi đầu sạch cho giải pháp của tôi, sau khi tôi giải thích, bạn có thể tìm ra điều này có cần thiết hay không)
  • chạy npm run starthoặc yarn startđầu tiên
  • chờ lệnh này được thực hiện công việc (thường bạn sẽ thấy Loading dependency graph, done.)
  • chạy react-native run-ios/android

Giải trình:

  • React Native đi kèm với 2 phần:

    • Phần bản xứ
    • Phần Javascript
  • Xây dựng lệnh:

    • react-native run-ios/androidlà để 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 starthoặc yarn startlà để 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.
  • Đó là lý do tại sao khi bạn chạy react-native run-ios/androidngay 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).
  • Các giải pháp "loại bỏ" khác hoạt động vì chúng buộc phải xây dựng lại.

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.


14

Hãy thử chạy mã này:

$ sudo xcodebuild -license

Điều này có thể khắc phục vấn đề. Điều này làm việc cho tôi.


11

Tôi đã có cùng một lỗi và chỉ có thể chạy ứng dụng thông qua Xcode. react-native run-iosđã không làm việc. Để giải quyết vấn đề bạn cần xóa buildthư mục tại YOUR_PROJECT/ios/build/. Sau này, bạn sẽ có thể chạy lại ứng dụng của mình react-native run-ios. Hi vọng điêu nay co ich.


9

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


Sau khi chuyển sang một máy tính hoàn toàn mới, đây là thứ tôi cần. TY!
jeffctown

Đúng ở đây trên một máy tính mới!
Vishal Sakaria

Vấn đề của tôi là thiết lập proxy trên cấu hình mạng của tôi, tôi chỉ cần loại bỏ proxy và nó hoạt động tốt.
Ahmad Khani

8

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 ..)


7

Đố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.


lệnh 'Reac -igen bundle --pl platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-Dest ./ios/release/ main.jsbundle 'sẽ mô tả bất kỳ lỗi nào trong việc xây dựng gói. cho đến khi lệnh này thành công, run-ios sẽ không hoạt động
eric f.

lỗi hiện tại của tôi là '@connect' của 'Reac-redux' không được nhận ra bằng cách nào đó?
eric f.

Có thể thử thêm "plugins": ["transform-decorators-legacy"]vào tệp .babelrc của bạn. Hoặc thử nó với HOC kết nối.
urbancvek

@urbancvek, đối với tôi, lỗi này là The node type SpreadProperty has been renamed to SpreadElement@babelthư 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.
Daniel

7

Giải pháp -> npm startsau đó mở Terminal mới và đi đến đường dẫn dự án của bạn và sau đó nhấn react-native run-iosnó hoạt động với tôi


7

Điều gì đã giải quyết nó cho tôi:

  • Mở một cửa sổ đầu cuối
  • cd vào YOUR_PROJECT/ios
  • Xóa thư mục xây dựng với rm -r build
  • Chạy react-native run-ioslại

Ngoài ra, bạn có thể mở Finder, điều hướng đến YOUR_PROJECT/iosvà xóa buildthư mục.

Sau đó chạy react-native run-ioslại.

Nguồn: Andrew Bancroft


5

Đâ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

3
"Đây là một vấn đề với phản ứng gốc v0.42.1." - Nó cũng tồn tại với v.0.43.
dcp

5

đầ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

5

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.


4

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.


4

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.


3

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


Cảm ơn, tôi đã mở VPN toàn cầu để vượt qua Great Fire Wall!
BaiJiFeiLong

Tôi đã tắt cấu hình proxy tự động trong Mac. Nó hoạt động sau 2 ngày nỗ lực: D ... Cảm ơn.
Nirav Jain

Tôi thực sự đã chạy một VPN mà tôi thậm chí không nhớ. tắt nó làm việc
Pedro Marques

3

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.


3

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 adbmáy chủ:adb kill-server && adb start-server


3

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.commandnhư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.


3

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.


2

Giả sử rằng bạn đang sử dụng nvmvà cài đặt nhiều phiên bản nút, đây là giải pháp:

  1. Nói rằng bạn chạy npm install -g react-native-clivào node v6.9.5.
  2. Bây giờ làm node v6.9.5 mặc định bằng cách chạynvm alias default 6.9.5
  3. Bây giờ chạy react-native run-ios

Vấn đề là, bạn có nhiều phiên bản nút được cài đặt qua nvmvà để cài đặt, react-native-clibạ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 nvmkhô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.


2

đả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


1

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 localhostthà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.


Bạn có thể giải thích về giải pháp của bạn?
Ashish Singh Rawat

1

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 đề.


1

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


0

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.