`React / RCTBridgeModule.h` 파일을 찾을 수 없습니다.


115

xcode에서 반응 네이티브 iOS 앱을 빌드하는 동안이 오류가 발생합니다.

여기에 이미지 설명 입력

npm 설치 및 react-native-fs 라이브러리를 연결하는 rpm 후이 오류가 발생하기 시작했습니다 . 그러나 온라인에서 솔루션을 검색 한 후 많은 사람들이 다른 반응 네이티브 라이브러리를 설치하는 동안 동일한 오류가 발생하는 것을 발견했습니다.

가능한 솔루션 "빌드 설정"에서 다음과 같은 추가 많은 IS에 의해 제안, -> "헤더 검색 경로".

$(SRCROOT)/../node_modules/react-native/React -(재귀)

하지만이 솔루션에는 운이 없지만 여전히 동일한 오류가 발생합니다.


v0.41.2에서도 동일한 오류가 발생합니다. <React / RCT ...>에서도 작동해야하지만 그렇지 않습니다. : /
pgarciacamou

@camou 아래 내 대답을 참조하십시오. 그것은 도움이 될 수 있습니다
로렌스

@CecilRodriguez react-native-fs에 어떤 버전이 있습니까?. XCode로 수동으로 추가하는 경우 github.com/itinance/react-native-fs#adding-manually-in-xcode
Shubham Khatri

이 오류가 발생합니다. 모듈을 해결할 수 없습니다react-native-webrtc
Ankita

답변:


160

제 경우에는 iOS 용 0.40+ 반응 네이티브 앱을 보관하려고 할 때이 특정 문제가 발생했습니다 (솔루션은 여기에서 찾았습니다 :으로 업그레이드 할 때 신뢰할 수있는 빌드 ^0.39.2실패^0.40.0 ).

일어난 일은 Xcode 가 반응 네이티브 라이브러리를 병렬로 빌드하려고 시도하고 실제로 반응 라이브러리를 빌드 하기 전에 암시 적 반응 종속성이있는 라이브러리를 빌드하고 있다는 것입니다.

제 경우의 해결책은 다음과 같습니다.

  1. 병렬 빌드를 비활성화합니다.

    • Xcode 메뉴-> 제품-> 구성표-> Shemes 관리 ...
    • 응용 프로그램을 두 번 클릭하십시오.
    • 빌드 탭-> 빌드 병렬화 선택 취소
  2. 프로젝트 종속성으로 반응 추가

    • Xcode 프로젝트 네비게이터-> React.xcodeproj를 라이브러리에서 루트 트리로 드래그
    • 빌드 단계 탭-> 대상 종속성-> +-> React 추가

1
아래에서 react-native 0.40+로 업그레이드 할 때만 이런 일이 발생한다는 것을 발견했습니다. 0.40+ RN으로 초기화 된 프로젝트에는 이미 병렬 빌드가 꺼져 있습니다.
agiaLab

20
"뿌리 트리로 끌기"는 무엇을 의미합니까? 그리고 "빌드 단계 탭"... 이것이 React.xcodeproj의 빌드 단계입니까?
GreenAsJade 2017-06-26

2
새 타겟 생성
후이

2
Expo에서 배출 된 프로젝트를 어떻게 처리합니까? 나는 Podfile 종속성에 반작용, React.xcodeproj의 어느 곳이없는
세바스티앙 Lorber

1
@SebastienLorber 개방 node_modules 드래그 거기에서 프로젝트를 반응
라몬 카날 레스

35

대상 을 비활성화 Parallelise Build하고 React대상 위에 추가 하십시오.

여기에 이미지 설명 입력


첫 번째 답변 후 스스로 알아 냈지만 반응을 올리면 트릭이되었습니다! 그것이 실제로 건축 과정에서 무엇을 의미하는지 깨달아야했습니다
njoye

1
머리카락을 뽑아 내고 React 타겟을 추가 한 후 내가 뭘 잘못하고 있는지 생각했지만 위로 이동하면 트릭이 생겼습니다. @njoye 빌드 프로세스에서 이것이 의미하는 바를 설명해 주시겠습니까? 감사합니다!
유진 김

@EugeneKim 목록에있는 요소의 순서는 Apple이 연대순으로 표시하는 방식입니다 (이는 iOS뿐 아니라 OSX에서도 여전히 저를 괴롭 힙니다). 따라서 대상 "React"를 "App"앞에두면 "React"에서 코드가 작성됩니다. 자신의 코드는 React 타겟을 사용하기 때문에 빌드 할 수 있는지 여부에 영향을 미치는 것 같습니다. 대상에서 사용되는 빌드중인 파일이있을 수 있습니다.
njoye

나는 빌드 시간을 줄이기 위해 병렬 빌드 기능을 사용하려면
utkarsh가-개발 운영

25

빠른 수정 (최고가 아님)

import react-native 헤더 행을 변경합니다.

 #import <React/RCTBridgeModule.h>
 #import <React/RCTLog.h>

에:

 #import "RCTBridgeModule.h"
 #import "RCTLog.h"

다음은 내가 사용하려는 라이브러리를 변경 해야하는 예입니다 . Closes # 46- 'RCTBridgeModule.h'file not found .


16
릴리스 노트를주의 깊게 읽으면 실제로 다른 방법이라고 생각합니다. 새로운 / 승인 된 방법은 #import <React/RCT...h>? 여기에 커밋
사용자

1
나는 그것이 문서가 권장하는 것과 거꾸로 보인다는 것을 알고 있지만, 지정된 형식 #import "RCTBridgeModule.h"이 오늘 나를 위해 실제로 더 잘 작동했습니다.
paws

나를 위해 오류는 RCTFileReaderModule.h 파일에 플래그가 지정됩니다. 제안 된대로 #import 문을 변경했지만 도움이되지 않았습니다. 연결된 repo pull 요청에서 RNFSManager.h 및 RNFSManager.m에서 변경이 수행되었음을 알 수 있습니다. 이 두 파일에서 만들려고했지만 도움이되지 않았습니다. 내가 뭘 잘못하고 있는지 아십니까?
Yossi



3

Libraries/React.xcodeprojxcode에서 빨간색 이면 node_modules를 다시 설치하십시오.

rm -rf node_modules && yarn

react-native 0.46.3에서 새로 만든 프로젝트는 빨간색이었습니다. 내가 react-native init을했을 때 SI에는 npm 5.3.0과 yarn 0.24.5가 있습니다.


고맙습니다, 저는 제 프로젝트를 github에 푸시했습니다. 그리고 다시 복제 할 때 빨간색으로 표시된 React 라이브러리가 누락되었습니다. 명령이 작동 중입니다. 👍
Rifinio

2

이전 게시물 및 여기에 설명 된 반응 네이티브 라이브러리의 최신 릴리스 에는 주요 호환성 변경 사항이 있습니다. react-native 0.40 이상으로 업그레이드 할 계획이없는 경우, 예를 들어 react-native-fs를 사용하여 이전 버전의 라이브러리를 강제 설치할 수 있습니다.

npm install --save -E react-native-fs@1.5.1

2

디버그를 빌드 할 수 있었지만 아카이브를 빌드 할 수 없었습니다.

이 문제 React.xcodeproj는 / node_modules / react-native / React에서 찾은 Xcode의 루트 디렉터리 로 드래그하여 해결 한 다음 React를 빌드 단계> 대상 종속성에서 대상 종속성으로 추가했습니다.


더 없습니다 React.xcodeproj에서 /node_modules/react-native/React.
Andrew Koster

@AndrewKoster 저도 같은 문제를 겪고 있습니다
Cecil Rodriguez

@CecilRodriguez Cocoapods를 추가하고 React를 Podfile에 포드로 추가하여 Xcode에서 컴파일 할 때이 문제를 해결했습니다. 그러나에서 컴파일 된 라이브러리를 사용하려고하면 react-native run-iosXcode에서 발생하지 않는 컴파일 오류가 발생합니다. 관련 문서의 완전한 부족은 실망 스럽습니다.
Andrew Koster

1
@Yossi 아니, 아직. 내가 시도한 모든 시도가 효과가 없었습니다.
Cecil Rodriguez

1
@Yossi 아니, 나는 당신을 시도했습니다. 불운. 내 네이티브 모듈과 관련이 있다고 생각합니다
Cecil Rodriguez

2

React Native 0.60 이후이 문제는 종종 새로운 '자동 연결'기능과 혼합 된 연결된 라이브러리로 인해 발생합니다. 이것은 나를 위해 그것을 고칩니다.

다음을 사용하여 이전 라이브러리 연결 해제

$ react-native unlink react-native-fs

완전히 다음을 사용하여 포드 통합 새로 고침

$ pod deintegrate && pod install

이제 작업 공간을 다시로드하고 깨끗한 빌드를 수행하십시오.


1

이 오류는 pod install새 종속성에 대한 명령을 실행 한 후에 나타났습니다 . 이와 함께 React도 설치되었습니다. 따라서 Xcode가 경로와 혼동되었을 것입니다. PodFile에서이 줄을 제거하고 오류가 사라졌습니다. 여기서 제거 된 항목은 이미 Xcode에 링크되어 있습니다.

target 'app' do

  pod 'GoogleMaps'
  pod 'Firebase/Auth', '~> 6.3.0'
  pod 'Firebase/Database', '~> 6.3.0'

  # Removed four pods below and it worked.

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'

  pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

  end

1

나 에게이 오류는 새 체계 / 대상 ( app.staging 는 앱에 )을 포드 설치를 사용하여 포드를 설치할 .

이 문제는 모든 대상에 대해 포드가 공유되지 않기 때문에 발생합니다. 그래서 (새로 추가 된 대상에 추가해야 app.staging을 내부) Podfile .

여기 내 Podfile이 있습니다.

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  # Pods for app
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"

  target 'appTests' do
    inherit! :search_paths
    # Pods for testing
  end

  # Pods for staging app // important line below
  target 'app.staging'

  use_native_modules!
end

1

create-react-native-module으로 만든 새 모듈에서이 오류가 발생 합니다 . 게시 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.

나를 위해 일한 것은 먼저 yarn새로 생성 된 모듈 폴더에서 실행되도록 확인하는 것이 었 습니다 node_modules/(이 단계는 분명합니다). 그런 다음 XCode에서 MyModuleName의 기본 선택 대신 Product-> Scheme-> React를 선택합니다.


+1, 유효한 podfile을 만들고 실행할 때까지 다른 체계를 볼 수없는 모듈 개발에 새로운 다른 사용자를 추가하는 것이 중요합니다 pod install. create-react-native-module은이 작업을 수행하지 않는 것 같습니다. 잠시 전화를 끊었습니다. 그러나 이것은 유효한 podfile을 만들고 설치를 실행하면 저에게 효과적이었습니다.
Elliot Rodriguez

1

프로젝트의 iOS 폴더로 이동하여 포드를 설치하십시오.

$ pod install

포드 유형 명령 설치에 오류가 발생하는 경우

$ xcode-select -p

결과는-/Applications/Xcode.app/Contents/Developer 여야합니다.

경로가 올바르지 않으면 Xcode에서 iOS 프로젝트를 열고 Xcode-> preferences-> command line tools-> select Xcode로 이동하십시오.

그리고 다시 포드를 설치하면 문제가 해결됩니다.



0

편집기에서 만들려면 SMobile.xcscheme 도 엽니 다 .

그리고 변경 parallelizeBuildables = "NO"


0

나를 위해 위의 솔루션에서 아무것도 작동하지 않았으며 아래에서 작동 한 것입니다 (이미 확인 Parallelize Build하고 추가했습니다 React)

1. Open XCode --> To Libraries add `$LibraryWhichDoesNotWork.xcodeproj$`
2. Then for your app in the `Build Phases` add to the `Link Binary with Libraries` the file `lib$LibraryWhichDoesNotWork$.a`

0

0.58.4에서 새로운 반응 네이티브 버전 0.60.4로 업그레이드하는 동안이 문제가 발생했습니다. 인터넷에서 찾은 내용은 도움이되지 않았지만 작동하도록 관리했습니다.

빌드 설정으로 이동하여 '헤더 검색 경로'를 검색하고 항목을 선택한 다음 DELETE 버튼을 누릅니다.

이 값을 재정의했으며 삭제 후 기본값으로 돌아간 것 같습니다. 또한 Cocoapods는 터미널에서 다음과 같은 메시지로 불평했습니다 pod install.

[!] The `app [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-app/Pods-app.release.xcconfig'. This can lead to problems with the CocoaPods installation

0

매뉴얼을 작성한 후이 문제가 발생했습니다. react-native linkRN 0.59+에서 자동 링크를 지원하지 않는 종속성 를 후이 문제가 발생했습니다.

해결책은 Xcode의 Libraries 폴더에서 xcodeproj 파일을 선택한 다음 Build Settings에서 Header Search Paths를 변경하여 다음 두 가지 (재귀 적)를 추가하는 것입니다.

$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core
$(SRCROOT)/../../../ios/Pods/Headers/Public

0

Parallelise Build를 활성화 된 상태로 유지하고 누락 된 헤더 문제를 방지하려면, 반응 헤더를 파생 데이터 영역에 배치하는 사전 빌드 단계를 스키마에 제공하십시오. 이 경우 빌드 설정이 React 프로젝트에서 오는지 확인하십시오. 예, 아름다움의 것은 아니지만 작업을 완료하고 빌드에서 많은 시간을 절약합니다. 사전 빌드 단계 출력은 prebuild.log에서 끝납니다. 복사해야 할 정확한 헤더는 프로젝트의 반응 네이티브 종속성에 따라 다르지만 여기에서 요점을 얻을 수 있습니다.

계획 편집 => 빌드

환경 변수에서 파생 된 데이터 디렉터리를 가져오고 필요한 반응 헤더를 복사합니다.

#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')

echo derived root = ${derived_root}
echo react headers = ${react_base_headers}

mkdir -p ${derived_root}include/React/

find  "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;

스크립트는 빌드 청소 중에 호출됩니다. 이는 이상적이지 않습니다. 제 경우에는 청소 중에 스크립트를 일찍 종료 할 수 있도록 변경되는 하나의 env 변수가 있습니다.

if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
    exit 0 
fi

0

pod 파일이 있으면 pod 만 설치하면됩니다.

pod install

그렇지 않은 경우 : 먼저

pod init

그때,

pod install

터미널에서. 그리고 당신은 갈 수 있습니다.


-1

제대로하기 위해 할 수있는 일은 다음과 같습니다.

1) npm uninstall reat-native-fs라이브러리 제거

2) npm unlink react-native-fs라이브러리 연결 해제

이제 라이브러리가 성공적으로 제거되고 이제 프로젝트에 lib를 다시 설치하고 이번에는 모든 것을 수동으로 연결합니다. 때때로 자동 연결로 인해이 오류가 발생합니다.

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