반응 네이티브에서 '번들 URL 없음'의 의미는 무엇입니까?


199

반응 네이티브 프로젝트를 실행할 때 오류가 발생 no bundle URL present하지만 실수가 무엇인지 모르겠지만 매우 혼란 스러웠습니다.

여기에 이미지 설명을 입력하십시오


2
네이티브 iOS 앱 반응 에서이 문제에 직면했습니다. xcode의 ios 폴더에서 xcodeproj를 열고 거기에서 실행하십시오. 프록시가 아닌지 확인하십시오.
Abhay Shiro

9
대부분의 경우 빌드 디렉토리를 지우면 도움이됩니다rm -rf ios/build/
onmyway133

대부분의 상황에서 도움이됩니다. 그러나이 특별한 경우이 명령 으로이 오류를 해결할 수있었습니다 (반응식 : "0.60.4") :watchman watch-del-all
O. Borcuhin

일반적으로 메트로 번 들러가 실행되고 있지 않다는 것을 의미합니다. 일부 사람들은 자체 터미널이나 표준 컴퓨터 터미널에서 실행합니다. 나는 보통 터미널을 닫고 앱을 다시 시작하면 수정됩니다.
Sara Inés Calderón

답변:


128

다음을 수행하여 오류 No bundle URL present를 해결하십시오 .

  • 다시 빌드하기 전에 프로젝트 루트 디렉토리에서 다음 명령을 실행하여 iOS 빌드 디렉토리를 삭제하고 다른 React Native 세션 (기본 포트 8081에서 실행중인 것으로 가정)을 종료하십시오.

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

  • 위의 명령 조합을 별명으로 결합하고이 명령으로 Bash 구성 파일 .bashrc에 추가하여 이러한 오류가 발생하지 않도록 React Native 워크 플로우를 업데이트하십시오.

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 시작). 아이폰 OS 시뮬레이션 (상태 - 문제는 때 사라 react-native run-ios)를 실행했다 - 내가 실행 npm install한 후와 react-native run-ios다시. 터미널 창에서 번들로 묶음을 표시 한 다음 시뮬레이터에서 시작 화면을 표시했습니다.

적요이 링크를 확인react-native init PropertyFinder사용에 선 시도 npm start(이 사람이 나를 위해 작동)

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

16.9 업데이트

내 포트 8081이 McAfee에 의해 차단되었습니다. 직접 다른 포트를 사용하여 작동하지 않는 react-native start --port=8082react-native run-ios --port=8082

여기에 주어진 거의 모든 솔루션을 시도했습니다. 그러나 아무것도 작동하지 않았습니다.

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

해결책:

Xcode에서 8081을 검색하고 모두 8082로 바꿨습니다. 그런 다음 동일한 명령을 실행하여 앱을 빌드하고 실행하십시오. 앱이 원활하게 작동

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

여기에 이미지 설명을 입력하십시오


2
@dcp "react-native run-ios"가 이미 부팅 된 상태에서 여러 번 실행 해 보셨습니까? 앱을 실행할 때마다 적어도 두 번 (매번 2 분 정도 기다릴 필요가있는) 것 같습니다.
Suva를 건너 뛰십시오

나를 위해 일하지만 매번이 단계와 관련이없는 장기적인 해결책을 찾고 싶습니다.
mheavers

31

앱을 번들로 만들었을 때도 같은 문제가있었습니다. 귀하 main.jsbundle가 주요 프로젝트를 대상으로하고 있는지 확인하십시오


3
이것은 내 반응 네이티브 0.60 업그레이드의 일부로 나에게 일어났다.
IonicBurger 19

같은 비디오 링크, youtube.com/watch?v=eCs2GsWNkoo
jrhamza

이것은 나에게도 일어났다. 그러나 나는 그것을 클릭했다. 그러나 여전히 똑같은 문제
Jason G

29

오류 메시지에 지시 된대로 :

Xcode / iOS 라이센스에 동의하려면 관리자 권한이 필요합니다. "sudo xcodebuild -license"를 실행 한 다음이 명령을 다시 시도하십시오.

다음 명령을 실행하면 작동합니다.

sudo xcodebuild -license

tks 이것은 터미널에서 실행 한 후 xcode에서 빌드 한 후에 저에게 효과적입니다.
tess hsu

아니. 여전히 나를 위해 작동하지 않습니다. 나는 다른 포트에서 실행하고, 8081이 차단됩니다
인 Ashish 싱 Rawat

27

이 문제는 localhost를 통한 안전하지 않은 연결을 허용하지 않거나 http를 통해 안전하지 않은 연결을 허용하려고 할 때 발생합니다.

이 문제를 해결하려면 다음을 추가하십시오 info.plist.

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

4
이 사람은 어떤 영웅입니까? 나와 맥북을 창문 밖으로 뛰어 내리지 못 했어! localhostInfo.plist 에서 예외 도메인을 로컬 네트워크 주소로 변경 했기 때문에 해결되지 않았습니다. 예외 도메인으로 'localhost'에 대한 블록을 추가하고 작동했습니다.
다리우스

1
진심으로 당신의 대답은 나에게 신처럼 들어 왔습니다 고마워, 목요일부터 고집 했어
Tushar Pandey

26

시뮬레이터와 터미널을 닫습니다. 새 프로젝트를 열고 프로젝트로 이동 한 후 다음과 같이 반응 네이티브를 업그레이드하십시오.

react-native upgrade

문제 : 번들 실행에 실패한 경우 RCTFatal에서 무한 재귀 .


1
예,하지만 제 경우에는 업그레이드 할 필요가 없었습니다. 터미널과 시뮬레이터를 닫는 것으로 충분했습니다.
gianni

@gianni 지금 어떤 버전의 react-native를 실행하고 있습니까?
Mateo Marconi

1
여전히 오류를보고 아무런 차이가없는 것 같습니다.
SSH 이번

2
이것은 나를 위해 일한,하지만 당신은 잘하고 실행으로 시뮬레이터를 닫가 반응 네이티브 실행 IOS를
제임스 오브라이언

1
```info 도움이되지 않았습니다 버전이 전달되지 않았습니다. Fetching latest ... warn 지정된 버전 "0.61.5"가 이미 node_modules에 설치되어 있으며 "0.61.5"semver 범위를 충족합니다. `
Ashish Singh Rawat을

19

이유:

앱이 서버를 찾을 수 없기 때문입니다 (UI를 제공하는-자바 스크립트 코드로).

해결책:

  • 반응이 닫히는 반응과 관련된 모든 것을 확인하십시오 (필요하지 않음, 솔루션을 깨끗하게 시작하기 위해 설명 후, 이것이 필요하다는 것을 알 수 있습니다)
  • 실행 npm run start또는 yarn start처음
  • 이 명령이 완료된 작업을 기다립니다 (보통 Loading dependency graph, done.)
  • 운영 react-native run-ios/android

설명:

  • React Native에는 두 부분이 있습니다.

    • 기본 부분
    • 자바 스크립트 부분
  • 빌드 명령 :

    • react-native run-ios/android네이티브 부분을 빌드 한 다음 장치에 배포하고 장치에서 앱을 시작하는 것입니다 (시뮬레이터 / 에뮬레이터 / 실제 장치). 완료하는 데 보통 3 ~ 4 분이 걸렸습니다.

    • npm run start또는 yarn start자바 스크립트 부분을 빌드하고 개발자 서버를 시작하여 빌드 된 UI를 앱에 제공하는 것입니다. 보통 30 초가 걸렸습니다.

=> 일반적으로 자바 스크립트 부분이 먼저 끝난 다음 기본 부분이 나중에옵니다. (사용한 시간 기준).

=> 이것은 처음 빌드 (신규 빌드)에만 해당됩니다.

재 구축의 경우 => :

  • 네이티브 부분은 변경 사항을 확인하는 데 10 ~ 15 초가 걸렸으며 자바 스크립트 부분을 빌드하고 제공하기 전에 네이티브 부분 => 변경이 수행되지 않았기 때문에. (자바 스크립트 부분이 다시 작성되었는지 확실하지 않지만 기본 부분보다 시간이 오래 걸렸습니다)

  • 그래서 우리 가이 문제를 겪었던 이유는 앱이 실행되었고 아직 존재하지 않는 것을 요구했습니다.

보너스:

  • 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 조회가 로컬 호스트를 찾지 못하는 경우에 발생합니다.

해결책 :

etchost 파일에 localhost ip를 추가하십시오.

아래 줄을 etc 호스트 파일 (/ etc / hosts)에 추가 할 수 있습니다

127.0.0.1 로컬 호스트

255.255.255.255 브로드 캐스트 호스트

:: 1 리터. ocalhost

이것이 문제임을 확인하기 위해 safari에서 번들 URL을 칠 수 있습니다 (크롬으로 시도하면 해결되지만 safari는 해결할 수 없습니다). http : // localhost : 8081 / index.ios.bundle? platform = ios & dev = true & minify = false


새 컴퓨터로 마이그레이션 한 후 이것이 필요했습니다. TY!
jeffctown

새 컴퓨터에서도 마찬가지입니다!
Vishal Sakaria

내 문제는 네트워크 구성에서 프록시를 설정하는 것이 었습니다. 프록시를 제거하면 잘 작동합니다.
Ahmad Khani

8

.plist 파일에서 ATS 설정이 올바른지 확인하십시오.

/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/issues/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.

내 현재 오류는 'react-redux'의 '@connect'가 어떻게 든 인식되지 않습니까?
에릭 f.

"plugins": ["transform-decorators-legacy"].babelrc 파일에 추가해보십시오 . 또는 connect HOC로 시도하십시오.
urbancvek

@urbancvek, 나에게 오류는 이것 The node type SpreadProperty has been renamed to SpreadElement@babel안의 참조 라이브러리이며 node_modules, 이것을 해결 한 것은 아무것도 발견하지 못했다.
Daniel

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

이것은 react-native v0.42.1의 문제입니다. 모든 터미널 및 XCode 인스턴스를 닫고 다음을 실행하십시오.

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

3
"이것은 react-native v0.42.1의 문제입니다."-v.0.43에도 존재합니다.
dcp


5

터미널에서 실행하십시오 react-native start.

cd your react native app directory/ react-native start 

패키지가 시작되고, 이제이 터미널 창을 닫지 마십시오. 다른 터미널 창에서 프로젝트를 실행하십시오. 이것이 내가 제대로 작동하도록하는 유일한 방법입니다.


4

이것을 우회하는 가장 쉽고 빠른 방법을 발견했습니다. 시뮬레이터 (2 x Cmd + Shift + H) 에서 앱을 종료 하고 다시 시작하는 것입니다.


4

나는이 같은 문제가 있었다. 그러나 내 문제는 내 Mac과 iPhone이 동일한 Wi-Fi 네트워크에 있지 않다는 것입니다.

따라서 모두 동일한 네트워크에 있는지 확인하고 다시 한 번 다시 작성하십시오. 그렇지 않은 경우 여기에서 다른 구성원이 언급 한 솔루션을 시도하십시오.


3

네트워크 프록시를 확인하고 종료하십시오.

또는 패키저 서버를 유지 관리하는 다른 방법을 찾아야합니다.


감사합니다. 전 세계 VPN을 열어 그레이트 파이어 월을 건!습니다!
BaiJiFeiLong

Mac에서 자동 프록시 구성을 비활성화했습니다. 그것은 2 일 노력 후 일했습니다 : D. 감사합니다.
Nirav Jain

실제로 기억조차하지 못하는 VPN을 실행하고있었습니다. 그것을 종료 작동!
Pedro Marques

3

내 Mac을 다시 시작한 후에도 나에게 일어났다. 시뮬레이터에서 앱을 실행할 때 launchPackager 터미널 창이 열립니다. 나는 그 창을 닫고 프로세스를 종료했다 (또한 시뮬레이터를 닫았다).



3

나는이 문제가 나에게도 일어났다. 새 터미널 창을 열고 실행하기 위해 반응 네이티브 타이어가 작동 .../node_modules/react-native/packager/launchPackager.command하지만 실행되지 않았습니다. 수동으로 실행하고 계속 실행하면이 문제가 해결되었습니다.


3

info.plist의 NSExceptionDomains dict에서 'localhost'키를 확인하십시오.

존재하지 않으면 오류가 발생합니다.


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 있습니다. 나는 많은 방법을 시도했지만 아무도 효과가 없습니다. 마침내 나는 이것을 해결했다. 간단하고 쉽습니다.

주요 아이디어는을 변경하는 것입니다 localhost127.0.0.1있지만, RN 당신을 알려줍니다 곳이 아니다. 이 글은 다음의 RCTBundleURLProvider.m 번호 - (BOOL) isPackagerRunning : (있는 NSString *) 호스트 .

코드 변경 : oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; 시뮬레이터에는 문제가 없습니다. 장치 인 경우 IP 주소를 컴퓨터로 변경하십시오.


솔루션을 자세히 설명해 주시겠습니까?
Ashish Singh Rawat

1

나를 위해 일하는 또 다른 것은 xcode에서 프로젝트를 연 다음 청소하고 빌드하는 것입니다. 일반적으로 패키징 서버를 다시 실행하고 문제를 해결합니다.


1

아래 명령을 실행하십시오 :

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

launchpackager.command가 열리고 응용 프로그램이 iOS 시뮬레이터에 설치됩니다.


0

launchPackage.command터미널에서 실행 중인지 확인 하고 다시 실행하십시오. 번들을 빌드합니다. webpack-dev-server와 비슷합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.