Không tìm thấy tệp `React / RCTBridgeModule.h`


115

Gặp lỗi này khi tạo ứng dụng iOS gốc phản ứng trên xcode.

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

Bắt đầu nhận được lỗi này sau khi cài đặt npm và thư viện liên kết rpm react -native-fs . Nhưng sau khi tìm kiếm giải pháp trên mạng, tôi nhận thấy rằng nhiều người đang gặp phải lỗi tương tự khi cài đặt các thư viện gốc phản ứng khác.

Một giải pháp khả thi được nhiều người đề xuất là Thêm phần sau vào "Cài đặt xây dựng" -> "Đường dẫn tìm kiếm tiêu đề".

$(SRCROOT)/../node_modules/react-native/React - (Đệ quy)

Nhưng không may mắn với giải pháp này, vẫn gặp lỗi tương tự


Tôi cũng gặp lỗi này với v0.41.2, nó sẽ hoạt động với <React / RCT ...> nhưng nó không hoạt động: /
pgarciacamou 17/02/17

@camou xem câu trả lời của tôi bên dưới; nó có thể hữu ích
lawrence

@CecilRodriguez Bạn có phiên bản nào cho react-native-fs ?. Nếu bạn đang thêm thủ công bằng XCode, vui lòng kiểm tra github.com/itinance/react-native-fs#adding-manently-in-xcode
Shubham Khatri

Tôi gặp lỗi này: Không thể giải quyết mô-đunreact-native-webrtc
Ankita

Câu trả lời:


161

Trong trường hợp của tôi, sự cố cụ thể này đã xảy ra khi tôi cố gắng lưu trữ ứng dụng gốc 0,40+ cho iOS (giải pháp được tìm thấy ở đây: Bản dựng đáng tin cậy ^0.39.2không thành công khi nâng cấp lên^0.40.0 ).

Điều đã xảy ra là Xcode đang cố gắng xây dựng song song các thư viện gốc phản ứng và đang xây dựng các thư viện với các phụ thuộc phản ứng ngầm trước khi thực sự xây dựng thư viện phản ứng.

Giải pháp trong trường hợp của tôi là:

  1. Tắt các bản dựng song song:

    • Menu Xcode -> Sản phẩm -> Lược đồ -> Quản lý Shemes ...
    • Nhấp đúp vào ứng dụng của bạn
    • Tab Build -> bỏ chọn Parallelize Build
  2. Thêm phản ứng dưới dạng phụ thuộc dự án

    • Xcode Project Navigator -> kéo React.xcodeproj từ Thư viện vào cây gốc
    • Tab Build Phases -> Target Dependencies -> + -> thêm React

1
Tôi đã phát hiện ra rằng điều này chỉ xảy ra khi bạn nâng cấp lên react-native 0.40+ từ bên dưới. Dự án được bắt đầu với 0,40+ RN đã bị tắt các bản dựng song song.
agiaLab

20
"Kéo đến gốc cây" nghĩa là gì? Và "Tab Build Phases" ... đây có phải là Build Phases của React.xcodeproj không?
GreenAsJade

2
Khi lỗi này xuất hiện sau khi tạo ra một mục tiêu mới, bước 1 là đủ :)
Kepedizer

2
Làm thế nào để bạn đối phó với một dự án Expo bị loại bỏ? Tôi không có React.xcodeproj bất cứ nơi nào, Phản ứng là trong Podfile phụ thuộc
Sebastien Lorber

1
@SebastienLorber mở node_modules và kéo dự án phản ứng từ đó
Ramon Canales

35

Đảm bảo rằng bạn vô hiệu hóa Parallelise Buildvà thêm Reactmục tiêu trên mục tiêu của mình

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


Tôi đã tự tìm ra nó sau câu trả lời đầu tiên, nhưng di chuyển phản ứng lên đã thực hiện một mẹo! Đã nhận ra điều đó thực sự có ý nghĩa cho quá trình xây dựng mặc dù
njoye

1
Tôi đang giật tóc và nghĩ mình đã làm gì sai sau khi thêm mục tiêu React nhưng việc di chuyển nó lên đã thực hiện một mẹo nhỏ. @njoye bạn có thể giải thích điều này có ý nghĩa gì trong quá trình xây dựng không? Cảm ơn bạn!
Eugene Kim

@EugeneKim thứ tự của các phần tử trong danh sách là cách của Apple để hiển thị thứ tự thời gian (điều này vẫn thường xuyên xảy ra, trên OSX cũng như iOS). Vì vậy, đặt mục tiêu "React" trước "Ứng dụng" sẽ xây dựng mã từ "React" trước của riêng bạn. Vì mã của riêng bạn sử dụng mục tiêu React, điều này có vẻ ảnh hưởng nếu nó có thể được xây dựng. Có thể có các tệp đang được xây dựng sau đó được sử dụng trong mục tiêu của bạn.
njoye

Tôi muốn sử dụng tính năng xây dựng song song để giảm thời gian xây dựng
Utkarsh-devops

25

KHẮC PHỤC NHANH (không phải là tốt nhất)

Thay đổi các dòng tiêu đề gốc phản ứng nhập:

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

Đến:

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

Đây là một ví dụ về những thay đổi tôi phải thực hiện cho thư viện mà tôi đang cố gắng sử dụng: Đóng # 46 - Không tìm thấy tệp 'RCTBridgeModule.h' .


16
Nếu bạn đọc kỹ các ghi chú phát hành, tôi nghĩ nó thực sự theo cách khác - cách mới / được phê duyệt là #import <React/RCT...h>? cam kết ở đây
người dùng

1
Tôi biết nó có vẻ ngược với những gì tài liệu đề xuất, nhưng định dạng được chỉ định #import "RCTBridgeModule.h"thực sự đã hoạt động tốt hơn cho tôi hôm nay.
paws

Lỗi đối với tôi được gắn cờ trong tệp RCTFileReaderModule.h. Tôi đã thay đổi câu lệnh #import như được đề xuất nhưng nó không hữu ích. Tôi thấy trong yêu cầu kéo repo được liên kết rằng thay đổi đã được thực hiện trong RNFSManager.h và RNFSManager.m. Tôi đã thử tạo nó trong hai tệp này nhưng nó cũng không giúp được gì. Bất kỳ ý tưởng những gì tôi đang làm sai?
Yossi

12

Thay đổi

  #import "RCTBridgeModule.h"

đến

 #import "React/RCTBridgeModule.h"

1
Cảm ơn rất nhiều!! Tôi đã dành hàng giờ để tìm giải pháp. Nhưng giải pháp này là vị cứu tinh. Cảm ơn!
Abhirup Mukherjee

3

Đối với những người xem gặp lỗi này sau khi nâng cấp React Native lên 0.40+, bạn có thể cần chạy react-native upgradetrên dòng lệnh.


5
Tôi đang thử điều này ngay bây giờ. Thay vào đó, sử dụng react-native-git-upgrade thì sao?
pgarciacamou 21/02/17

Đúng, đó là lựa chọn khác. Tôi nghĩ cả hai sẽ hoạt động.
lawrence

3

Nếu Libraries/React.xcodeprojxcode có màu đỏ thì hãy cài đặt lại node_modules

rm -rf node_modules && yarn

Dự án mới được tạo của tôi từ react-native 0.46.3 có màu đỏ: SI có npm 5.3.0 và sợi 0.24.5 khi tôi thực hiện react-native init


Cảm ơn bạn, tôi đã đẩy dự án của mình lên github. Và khi sao chép nó một lần nữa, tôi đã thiếu các thư viện React đang hiển thị bằng màu đỏ. lệnh của bạn đang hoạt động. 👍
Rifinio

2

Bản phát hành mới nhất của thư viện gốc phản ứng như đã giải thích trong các bài viết trước và ở đây có những thay đổi về khả năng tương thích. Nếu bạn không có kế hoạch nâng cấp lên react-native 0.40+, bạn có thể buộc cài đặt phiên bản trước của thư viện, ví dụ như với react-native-fs:

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

2

Tôi đã có thể tạo một bản gỡ lỗi, nhưng tôi không thể tạo một kho lưu trữ.

Tôi đã giải quyết vấn đề này bằng cách kéo React.xcodeprojtìm thấy trong / node_modules / react-native / React vào thư mục gốc của tôi trong Xcode, sau đó thêm React làm phụ thuộc mục tiêu trong các giai đoạn xây dựng> phụ thuộc mục tiêu.


Không có React.xcodeprojtrong /node_modules/react-native/React.
Andrew Koster

@AndrewKoster Tôi đang gặp vấn đề tương tự
Cecil Rodriguez

@CecilRodriguez Tôi đã cố gắng sửa lỗi này khi biên dịch trong Xcode, bằng cách thêm Cocoapods và thêm React làm nhóm trong Podfile. Tuy nhiên, khi tôi cố gắng sử dụng thư viện đã biên dịch react-native run-ios, tôi nhận được lỗi biên dịch không xảy ra trong Xcode. Việc thiếu đầy đủ các tài liệu liên quan là một điều bực bội.
Andrew Koster

1
@Yossi Không, chưa. Tất cả những nỗ lực tôi đã thử đều không có kết quả.
Cecil Rodriguez

1
@Yossi Không, tôi đã thử của bạn. Không may mắn. Tôi nghĩ nó có liên quan đến mô-đun gốc của tôi
Cecil Rodriguez

2

Sau React Native 0.60, sự cố này thường do thư viện được liên kết trộn lẫn với tính năng 'tự động liên kết' mới gây ra. Điều này sửa nó cho tôi

Hủy liên kết thư viện cũ bằng cách sử dụng

$ react-native unlink react-native-fs

Làm mới tích hợp Pods hoàn toàn bằng cách sử dụng

$ pod deintegrate && pod install

Bây giờ tải lại không gian làm việc của bạn và thực hiện xây dựng sạch sẽ.


1

Lỗi này xuất hiện đối với tôi sau khi tôi chạy pod installlệnh cho các phụ thuộc mới. Cùng với đó, React cũng đã được cài đặt. Do đó có lẽ Xcode đã bị nhầm lẫn với đường dẫn. Tôi đã xóa những dòng này khỏi PodFile và lỗi đã biến mất. Xin lưu ý rằng những người bị xóa khỏi đây đã được liên kết trong 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

Đối với tôi, lỗi này xảy ra khi tôi thêm một lược đồ / mục tiêu mới ( app.staging ) trong ứng dụng và cài đặt các nhóm bằng cách sử dụng cài đặt pod.

Sự cố này đang xảy ra do các nhóm không được chia sẻ cho tất cả các mục tiêu. Vì vậy, tôi cần thêm target mới được thêm vào ( app.staging ) bên trong Podfile .

Đây là Podfile của tôi.

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

Tôi nhận được lỗi này trong bất kỳ mô-đun mới nào mà tôi tạo bằng create-react-native-module . Không có giải pháp đã đăng nào phù hợp với tôi.

Điều hiệu quả đối với tôi trước tiên là đảm bảo chạy yarntrong thư mục mô-đun mới được tạo để tạo node_modules/(bước này có lẽ là hiển nhiên). Sau đó, trong XCode, chọn Product -> Scheme -> React thay vì lựa chọn mặc định của MyModuleName.


+1, điều quan trọng là phải thêm cho những người khác mới phát triển mô-đun mà bạn sẽ không thấy các lược đồ khác cho đến khi bạn tạo một podfile hợp lệ và chạy pod install. create-react-native-module dường như không làm việc này cho bạn. Tôi đã gác máy một lúc. Nhưng điều này có hiệu quả với tôi khi tôi tạo một podfile hợp lệ và chạy cài đặt.
Elliot Rodriguez

1

Chuyển đến thư mục iOS trong dự án của bạn và cài đặt pod -

$ pod install

Nếu bạn gặp bất kỳ lỗi nào khi cài đặt lệnh loại pod-

$ xcode-select -p

Kết quả phải là - /Application/Xcode.app/Contents/Developer

Nếu đường dẫn không chính xác, hãy mở dự án iOS của bạn bằng Xcode và đi tới: Xcode-> tùy chọn-> công cụ dòng lệnh-> chọn Xcode

Và cài đặt lại pod vấn đề của bạn sẽ được khắc phục.



0

Nếu bạn muốn tạo nó từ trình chỉnh sửa của mình, hãy mở SMobile.xcscheme

Và thay đổi parallelizeBuildables = "NO"


0

Đối với tôi đã không hoạt động bất kỳ từ các giải pháp trên và dưới đây là những gì đã hoạt động (tôi đã kiểm tra Parallelize Buildvà thêm vào 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

Tôi đã gặp sự cố này khi nâng cấp từ 0.58.4 lên phiên bản gốc phản ứng mới 0.60.4. Không có gì từ những gì tôi tìm thấy trên internet giúp tôi, nhưng tôi đã cố gắng làm cho nó hoạt động:

Vào cài đặt xây dựng, tìm kiếm 'Đường dẫn tìm kiếm tiêu đề', chọn mục nhập, nhấn nút XÓA.

Tôi đã ghi đè các giá trị này và có vẻ như chúng đã trở lại mặc định sau khi xóa. Ngoài ra Cocoapods cũng phàn nàn về nó với các tin nhắn trong Terminal sau 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

Tôi gặp sự cố này sau khi thực hiện hướng dẫn sử dụng react-native linkphụ thuộc không hỗ trợ liên kết tự động trên RN 0.59+

Giải pháp là chọn tệp xcodeproj trong thư mục Thư viện trong Xcode và sau đó trong Cài đặt xây dựng, thay đổi Đường dẫn tìm kiếm tiêu đề để thêm hai thứ này (đệ quy):

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

0

Nếu bạn muốn bật Parallelise Build và tránh các vấn đề thiếu tiêu đề, thì hãy cung cấp bước xây dựng trước trong sơ đồ của bạn để đặt tiêu đề phản ứng vào vùng dữ liệu dẫn xuất. Lưu ý rằng cài đặt xây dựng đến từ dự án React trong trường hợp này. Vâng, nó không phải là một thứ đẹp đẽ nhưng nó hoàn thành công việc và cũng giúp loại bỏ rất nhiều thời gian khỏi việc xây dựng. Đầu ra của bước prebuild kết thúc trong prebuild.log. Các tiêu đề chính xác mà bạn cần sao chép sẽ phụ thuộc vào các phụ thuộc gốc phản ứng của dự án, nhưng bạn sẽ nhận được jist từ điều này.

Chỉnh sửa lược đồ => Xây dựng

Lấy thư mục dữ liệu dẫn xuất từ ​​các biến môi trường và sao chép các tiêu đề phản ứng cần thiết.

#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/" \;

Tập lệnh không được gọi trong quá trình xây dựng sạch - điều này không lý tưởng. Trong trường hợp của tôi, có một biến env thay đổi cho phép tôi thoát khỏi tập lệnh sớm trong thời gian sạch.

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

0

Bạn chỉ cần cài đặt pod, nếu tệp pod tồn tại chỉ cần nhập

pod install

nếu không: vậy trước tiên,

pod init

sau đó,

pod install

trong thiết bị đầu cuối. và bạn tốt để đi.


-1

Những gì bạn có thể làm để làm đúng là:

1) npm uninstall reat-native-fsđể gỡ cài đặt thư viện

2) npm unlink react-native-fsđể hủy liên kết thư viện

Bây giờ thư viện đã được gỡ bỏ thành công và bây giờ cài đặt lại lib trong dự án của bạn và lần này liên kết mọi thứ theo cách thủ công. Đôi khi liên kết tự động gây ra lỗi này.

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.