“RCTBundleURLProvider.h”파일을 찾을 수 없음-AppDelegate.m


124

XCode에서 React Native 앱을 실행하려고하는데이 오류가 계속 발생합니다. 문제를 해결하는 방법을 알 수 없습니다. 어떤 제안?

XCode의 오류 스크린 샷 :

스크린 샷


변경 사항을 적용하기 전에 프로젝트를 정리하고 내 경우에도 동일한 일이 발생하기 때문에 실행 해보십시오. 내 프로젝트를 정리하고 실행하면 작동합니다.
bittu

확실히 정답을 바꿔야합니다! @mark의 대답은 옳고 모든 사람들이 그것을 위해옵니다.
Serdar Değirmenci

답변:


64

노드 모듈을 삭제 한 다음 실행 npm install(또는 더 좋은 방법은 yarn)하고 모든 다운로드가 완료된 후 실행 react-native upgrade하면 이전 파일을 템플릿 파일로 대체 할 수있는 옵션이 제공됩니다. 이렇게하면 네이티브 종속성을 react-native에서 다시 연결합니다. 문제를 해결해야합니다. 물론 Xcode에서 프로젝트를 정리하는 것을 잊지 마십시오.


5
충돌을 자동으로 해결하므로 Git 기반의 새로운 업그레이드 도구를 사용할 수 있습니다. "npm install -g react-native-git-upgrade"다음에 "react-native-git-upgrade"를 실행합니다.
bitsand

2
제안을 따랐지만 .. 반응 네이티브 버전 0.41.2가 있습니다. 버전 0.41.2에서이 문제를 해결할 수있는 사람이 있습니까? 감사.
joemalski 2017

2
이것은 또한 나를 위해 작동하지 않았습니다. 엑스 코드 8.2.1을 사용하고 기본 0.41.2 반응
테리 레이

1
나는 이것을 시도했고 그것은 몇 가지 중요한 프로젝트 설정을 날려 버렸다. Action Extension을 react-native upgrade빌드 중이며 실행 후 모든 빌드 설정이 삭제되었습니다.
셰인 O 설리반

1
당신이 '설치 NPM'사용할 수 있도록 내가 파일 '을 yarn.lock 삭제'를 추가합니다
user1709076

247

xcode Product-> Scheme-> Manage Schemes Target에서 '+'를 클릭하여 "React"를 선택하고 React가 공유되도록 설정합니다.


10
나는 '+'를 누르고 선택할 "반응"이 없습니다. "MyApp를 대상"과 이름 : 대화 상자가 올라옵니다 MyApp를 "아무것도 반응 또는 공유 말한다..
피트 앨빈

이것은 xcworkspace 파일을 만든 cocopods를 설치 한 후 나에게 일어났습니다. 내 기존 xcodeproj에는 옵션으로 "React"가 없었지만 xcworkspace에는 있습니다.
AdamG

내가 실행을 실행 @PeteAlvin "-g는 네이티브 - 자식 업그레이드 반응 다음에 설치 NPM"반응 - 네이티브 자식 업그레이드 "그리고 그것은 나를 위해 옵션을 반응 보여
폴 피츠 제럴드

1
빌드 성공 후 실행은 Xcode에서 활성화되지 않습니다.
Lucky_girl

정말 감사합니다. 왜 이것이 허용되는 해결책이 아닌지 궁금합니다.
Gaurav Grover

19

React Native 0.40.0 이상을 사용하는 모든 경우 헤더 가져 오기가 RN 0.40.0 에서 크게 변경 되어 많은 .h 파일을 찾을 수 없음 오류가 발생합니다. react-native-git-upgrade디버그 중에 문제를 해결했지만 릴리스 / 아카이브에서 빌드가 실패했습니다.

cocoapods 및 Xcode 8.2.1 과 함께 RN 0.42.3 을 사용 하고 있습니다.

이 문제를 완전히 해결하려면 Xcode> Product> Scheme> Edit Scheme>으로 이동하십시오.

  1. 을 선택 취소 병렬 빌드 여기에 이미지 설명 입력
  2. Targets에서 + 버튼을 클릭하고 React를 추가하십시오. 여기에 이미지 설명 입력
  3. 추가 된 React 를 List in Targets 상단으로 드래그합니다 . 여기에 이미지 설명 입력

이제 프로젝트를 정리하고 빌드하십시오.


4
이 반응, 나를 위해 v.0.44.0 해결되지 않았다
유스 Eapen

17

다른 제안 중 어느 것도 내 오류를 수정하지 않았지만 이것은 해냈습니다.

1-Podfile 생성

ios/Podfile다음 콘텐츠로 반응 네이티브 앱 내부에 이름이 지정된 파일을 만듭니다 .

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target '<YOUR_APP_NAME>' do
  # Fixes required for pod specs to work with rn 0.42
  react_native_path = "../node_modules/react-native"
  pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
  pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end

2-Podfile 설치

pod installios 폴더 내 에서 명령 을 실행하십시오 .

3-XCode 재설정

XCode를 다시 시작하면 오류가 사라집니다.


이것은 문제를 어느 정도 해결합니다. 하지만 내가 알아 낸 것은 새로운 구성이 빌드 순서를 존중하지 않는 것 같아서 사용자 지정 스크립트를
받아들이지 않는다는 것

9

XCode에서 React 빌드를 처음 실행 한 후이 문제가 발생했으며 실제로 빌드하고 실행하여 오류를 없애기 위해 (팀을 선택하고 적절한 프로비저닝 후)해야했습니다. 때때로 XCode는 처음으로 컴파일하고 링크 할 때까지 실제로 오류가 아닌 오류를 표시합니다.


나도. 이상합니다. 빌드하고 디버그하면 오류가 사라졌습니다. 이유를 모르겠습니다.
Zhang Buzz

@PaulFitzgerald-무엇에 대한 라이센스? 나는 내가 ... 라이센스 아무것도 필요로하지 않는다고 생각되는
데이브 콜을

8

나를 위해 일하는 해결책은 React계획 을 공유 하는 것입니다.

React 체계가 없으면으로 새로 Selecting scheme menu -> Manage Scheme -> + -> choose React만든 다음 React 체계를 공유로 표시하십시오.

여기에 이미지 설명 입력

여기에 이미지 설명 입력 여기에 이미지 설명 입력

또한 Xcode 10을 사용하는 경우 File -> Project SettingsLegacy 빌드 시스템으로 이동하여 선택하십시오.

여기에 이미지 설명 입력


1
감사합니다! 내가 생각하는 iOS 및 Android 네이티브 개발과 함께 사용되는 도구에 대한 지식 없이는 이러한 종류의 문제를 해결하기가 때때로 어렵습니다.
qasimalbaqali

1
@ onmyway133 나는 당신의 대답을 더 많이 찬성 할 수 있기를 바랍니다! 감사합니다
Mohammad Abbas

7

다음 단계에 따라이 문제를 해결했습니다.

  1. xcode에서 프로젝트 루트를 선택하십시오.
  2. 드래그 React.xcodeproj에서 Libraries프로젝트의 루트.
  3. 프로젝트 이름 (제 경우에는 이름 SaleKit)을 클릭합니다.TARGETS
  4. 고르다 Build Phases
  5. Target Dependencies추가 드롭 다운에서React
  6. 재 구축 또는 재실행

여기에 이미지 설명 입력


1
이것은 나를 위해 일했습니다! 나는 react-native-schemes-manager를 사용하기 때문에 이것을 추가 할 때까지 빌드되지 않는 스테이징 계획이었습니다. 이전에는 몇 달 동안 작동했지만 갑자기 새로운 클론이 생성되지 않았습니다. package.json의 NPM 범위가 너무 관대하다고 의심됩니다.

Libraries 폴더에서 React.xcodeproj를 드래그 할 필요없이 나를 위해 일했습니다.
ErmannoS

6

ReactNative "0.54.2"의 경우 다음 솔루션으로 해결했습니다.

Xcode에서를 선택 Product->Scheme->Manage Schemes하고 'YourProject'-tvOS를 선택 해제하여 공유하지 않도록 설정하십시오.


1
나를 위해 작동, 반응 네이티브 버전 : 0.55.4. 감사합니다
Adarsh

1
나를 위해 일했습니다! 이전에 tvOS 대상을 삭제했으며 구성표로 제거하는 것을 잊었습니다! => RN 0.56
BigPun86

4

최상의 솔루션 :

Xcode에서 프로젝트의 '빌드 설정'을 열고 '헤더 검색 경로'를 검색하십시오.

다른 속성에 '예'또는 '아니요'가있는 '헤더 검색 경로'옆을 두 번 클릭합니다.

이제 "Header Search Path"(Build Settings 아래)에 다음을 추가합니다.

$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base

둘 다 재귀 적으로 만드십시오.


3

npm install프로젝트 디렉토리에서 실행 react-native하여이 오류를 해결하십시오.


3

.xcodeproj포드가 설치된 후 파일을 실행 중일 수 있습니다 .

닫고 .xcworkspace파일을 엽니 다 . 그것은 나를 위해 일했습니다.


2

프로젝트의 기본 디렉토리에서 다음을 실행합니다.

node_modules/react-native/packager/packager.sh --reset-cache

그 결과 :

Scanning 554 folders for symlinks in /Users/..../work/..../react_tutorial/AwesomeProject/node_modules (15ms)
 ┌────────────────────────────────────────────────────────────────────────────┐
   Running packager on port 8081.                                            
                                                                             
   Keep this packager running while developing on any JS projects. Feel      
   free to close this tab and run your own packager instance if you          
   prefer.                                                                   
                                                                             
   https://github.com/facebook/react-native                                  │
                                                                             
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /Users/..../work/...../react_tutorial/AwesomeProject

Loading dependency graph... ERROR  Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:

lsof -i :8081

다른 패키저 프로세스가 실행 중일 때 패키지 관리자를 실행할 수 없습니다.

다음과 같이 실행되는 프로세스를 찾았습니다.

lsof -i :8081

나보다 kill 9 ...과정.

Xcode를 닫은 후 다음을 실행하십시오.

npm install

그리고 Xcode를 다시 시작했습니다.이 순간부터 모든 것이 예상대로 작동합니다 !!


2

저도 같은 문제를 가지고 내가 배치하여 고정 RNFIRMessaging.h을/ RCTBundleURLProvider.h 반응

그래서 나는 다음과 같이 보일 것입니다.

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

2

다음을 시도하십시오.

  1. 청소 ( cmd+ shift+ K).
  2. Build core React-Xcode의 스키마로 React를 선택하고 빌드합니다 ( cmd+ B).
  3. 실패한 라이브러리 (예 : RCTText)를 빌드하십시오.
  4. 앱을 빌드하십시오.

1
라이브러리를 정확히 어떻게 구축합니까?
AlxVallejo

2

Product-> Scheme-> Manage Schemes-> +를 클릭하십시오. 그런 다음 반응을 공유로 추가하십시오. 또한 프로젝트 이름도 있는지 확인하십시오.


1

나는 같은 문제에 직면했다. 그런 다음 노드를 삭제했습니다.이 단계를 사용하십시오.

  1. node_modules 폴더 삭제-rm -rf node_modules && npm install
  2. 패키저 캐시 재설정-rm -fr $ TMPDIR / react- * 또는 node_modules / react-native / packager / packager.sh --reset-cache
  3. 클리어 워치 맨 시계-워치 맨 워치-델-올

그런 다음 빌드하고 확인하십시오.


그래도 반응 네이티브 버전 0.41.2에서 이것을 시도했지만 여전히 작동하지 않습니다 ... 어떤 입력입니까? 감사.
joemalski 2017

1

React를 업그레이드 한 후이 문제에 대한 수정은 선언을 다음과 같이 변경하는 것이 었 #import "RCTBundleURLProvider.h"습니다.#import <React/RCTBundleURLProvider.h>


1

나를 위해 교체

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

으로

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

AppDelegate.m 파일에서 작동했습니다.



0

나는 모든 제안을 시도했지만 그들 중 누구도 리포지토리를 삭제하고 다시 복제하고 나를 위해 일하지 않았으므로 변경 사항을 백업하고 나를 위해 일한 repo를 다시 복제하는 것이 좋습니다.


0

위에서 언급 한 모든 답변을 살펴 보았습니다.

나를 위해 일한 솔루션은 다음과 같습니다.

1 단계:

운영:

npm install react-native-fcm --save 

결과적으로 프로젝트의 node_modules> react-native-fcm 아래에 디렉토리가 생성됩니다.

프로젝트에 react-native-fcm 추가

2 단계:

'$(SRCROOT)/../node_modules/react-native-fcm/ios'빌드 설정에서 헤더 검색 경로에 추가해야합니다 .

헤더 검색 경로에 추가

이 두 단계는 오류를 제거하는 데 도움이되었습니다.

자세한 내용은 다음 링크를 통해 확인할 수 있습니다.

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21


0

제 경우에는 node_modules를 삭제하고 다시 설치할 수 없었으며 .60이 내 종속성에 문제를 일으키기 때문에 RN-0.59를 유지하고 싶었 react-native-git-updgrade거나 할 수 없었습니다 react-native upgrade.

어쨌든 내 상황은 'React / RCTBundleURLProvider.h'파일이 누락되었습니다. 내 스키마에서 이미 React를 사용할 수 있습니다. 내 라이브러리 디렉토리에 없었습니다. 내 타겟 의 빌드 설정을 확인했습니다.

타겟 의존성 안에서도 React가있었습니다.

'React'대상 종속성을 삭제 한 다음 다시 추가했습니다. 빌드 폴더를 정리하고 프로젝트를 다시 빌드했습니다. 작동했습니다.


중요하지는 않지만 오타가 있습니다. react-native-git-updgrade
Josh

0

React Native 0.61을 사용하고 있습니다. 공유 확장을 생성했는데이 오류가 발생했습니다. 나는 교체해야했다 :

#import "RCTBundleURLProvider.h"

#import "React/RCTBundleURLProvider.h"


-2

프로젝트 경로에 공백이 없는지 확인하십시오. 폴더 이름을 바꾸고 공백을 삭제하면 문제가 해결됩니다.

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