Closed maksibajo4 closed 5 months ago
This looks similar to this reported issue: https://github.com/facebook/react-native/issues/38140#issuecomment-1614755738, can you read that thread if that's useful to unblock yourself.
This looks similar to this reported issue: #38140 (comment), can you read that thread if that's useful to unblock yourself.
I've read that threat but that issue is for version 0.69.1
, so it didn't really help
@blakef even after applying the patch react-native@0.72.1.patch I still get the same error:
/Users/user/Documents/projects/UpdateTest/node_modules/react-native/ReactCommon/react/utils/RunLoopObserver.cpp:10:10 'react/debug/react_native_assert.h' file not found
This looks similar to this reported issue: #38140 (comment), can you read that thread if that's useful to unblock yourself.
I've read that threat but that issue is for version
0.69.1
, so it didn't really help
Did you rerun bundle exec pod install
after applying the patch?
@blakef yes i did, i also tried to remove all pods and cache to do a clean bundle exec pod install
, but still the issue persists.
/Users/user/Documents/projects/UpdateTest/node_modules/react-native/ReactCommon/react/utils/RunLoopObserver.cpp:10:10 'react/debug/react_native_assert.h' file not found
any solution for this problem?
+1
I am also facing the same issue
Also seeing the same issue
I am also facing the same issue
Any fix? Also struggling with it.
you can see here i'am success
and you can type npx react-native doctor
@maksibajo4 Did you manage to fix this issue?
+1
LE: Fixed by using https://github.com/software-mansion/react-native-svg/issues/2081#issuecomment-1691758876 Make sure you pass the libraries that complain
if ["React-cxxreact", "React-NativeModulesApple", "RNGestureHandler", "RNScreens", "React-utils", "React-runtimescheduler"].any? { |t| t == target.name }
append_header_search_path(target, "${PODS_ROOT}/../../node_modules/react-native/ReactCommon")
end
+1
@blakef I found that the patches mentioned in the thread above have already been included in RN 0.72.4. But with RN 0.72.4 I still have this issue.
Is there anyone who can solve? I've been stuck there for a while :(
I was able to fix the issue with this: https://github.com/software-mansion/react-native-svg/issues/2081#issuecomment-1691758876
For those who still has this problem, you can temporary get rid of it by pointing out to those headers manually by adding this into your podfile:
installer.pods_project.targets.each do |target|
# These React Naive targets have probelm on resolving some of their header files
# These lines will point out to header files that were missing
# This is a known issue on React Native 0.72
# https://github.com/facebook/react-native/issues/38283
if target.name == 'React-RCTSettings' || target.name == 'React-RCTBlob' || target.name == 'React-NativeModulesApple' || target.name == 'React-RCTVibration' || target.name == 'React-RCTNetwork' || target.name == 'React-RCTAnimation' || target.name == 'React-RCTImage' || target.name == 'React-RCTLinking' || target.name == 'React-Codegen' || target.name == 'React-CoreModules'
target.build_configurations.each do |config|
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios/ "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/"
end
end
if target.name == "RNReanimated"
target.build_configurations.each do |config|
config.build_settings["CLANG_CXX_LANGUAGE_STANDARD"] = 'c++17'
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios/ "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/"
end
end
if target.name == 'React-RCTAppDelegate' || target.name == 'React-utils' || target.name == 'React-NativeModulesApple' || target.name == 'React-cxxreact'
target.build_configurations.each do |config|
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon"
end
end
if target.name == 'VisionCamera' || target.name == 'ReactCommon'
target.build_configurations.each do |config|
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios/ "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../../../node_modules/react-native/ReactCommon/react/nativemodule/core/"
end
end
end
After this step you will also need to resolve RCTAppSetupUtils.h, for doing so add "${PODS_ROOT}/../../../../node_modules/react-native/Libraries/AppDelegate" in Header search paths in the build settings of main target of application, also change #import <React/RCTAppSetupUtils.h>
to #import <RCTAppSetupUtils.h>
I know this is not an ideal solution but it will bypass current errors for bumping your ReactNative version to 0.72.4.
Note to developers: Seems like all the problems lies in ReactCommon so I guess fixing its podspec might fix the issue
Hello I found the solution after working on this for so many long :) It's like the issue with your react native version gap
So I did this :
If you don't want to create new project to copy new podfile code, you can have it here "( use_modular_headers! require Pod::Executable.execute_command('node', ['-p', 'require.resolve( "react-native/scripts/react_native_pods.rb", {paths: [process.argv[1]]}, )', dir]).strip
platform :ios, min_ios_version_supported prepare_react_native_project!
linkage = ENV['USE_FRAMEWORKS'] if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end
target 'YourProject' do config = use_native_modules!
flags = get_default_flags()
use_react_native!( :path => config[:reactNativePath],
:hermes_enabled => flags[:hermes_enabled],
:fabric_enabled => flags[:fabric_enabled],
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
target 'YourProjectTests' do inherit! :complete end
post_install do |installer| react_native_post_install( installer, config[:reactNativePath], :mac_catalyst_enabled => false ) __apply_Xcode_12_5_M1_post_install_workaround(installer) end end
)"
Hope It will solve your problem with "react/debug/react_native_assert.h' file not found" error in react native ios GoodLuck Guys!
After having been blocked many days, my issue was finally fixed by this: https://github.com/software-mansion/react-native-svg/issues/2081#issuecomment-1691758876
After having been blocked many days, my issue was finally fixed by this: software-mansion/react-native-svg#2081 (comment)
Hi! Can you please guide me on how you resolve this? I added the following code in my pod but I am still getting the same error:
installer.pods_project.targets.each do |target| if ["React-cxxreact", "React-NativeModulesApple", "RNGestureHandler", "RNScreens", "React-utils", "React-runtimescheduler"].any? { |t| t == target.name } append_header_search_path(target, "${PODS_ROOT}/../../node_modules/react-native/ReactCommon") end end
Getting this on RN 0.72.5
and XCode 15
Adding the following to post_install do |installer|
fixed it for now:
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if ["React-cxxreact", "React-utils", "React-NativeModulesApple"].any? { |t| t == target.name }
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../node_modules/react-native/ReactCommon"
end
end
end
Getting this on RN
0.72.5
and XCode15
Adding the following to
post_install do |installer|
fixed it for now:installer.pods_project.targets.each do |target| target.build_configurations.each do |config| if ["React-cxxreact", "React-utils", "React-NativeModulesApple"].any? { |t| t == target.name } config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) " config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../node_modules/react-native/ReactCommon" end end end
Could you show your full post_install? I am still getting this error
The full snippet is below
After further testing while this resolves the react/debug/react_native_assert.h
I am now getting another error for React-NativeModulesApple
--> 'ReactCommon/TurboModuleBinding.h' file not found
.
Seems like other folks who have use_frameworks!
are getting the later as well. https://github.com/react-native-tvos/react-native-tvos/issues/575
Edit: After further debugging this seems to be an issue with the recent 0.72.5
release. 0.72.4
works for me on XCode 14.3.1
& 15
, but 0.72.5
leads to the above errors.
post_install do |installer|
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if ["React-cxxreact", "React-utils", "React-NativeModulesApple"].any? { |t| t == target.name }
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../node_modules/react-native/ReactCommon"
end
end
end
end
Downgrading to 0.72.4 (from 0.72.5) and upgrading the XCode from 14.3.2 to 15 fixed it for me without changing the Podfile.
Hi there, sorry that this issue slipped from my watch. Can any of you create a reproducer using the official reproducer so that I can work on that and fix the issue for everyone?
The reproducer should be a vanilla react native app, with all the required libraries.
Thank you so much
I am having this issue, I've tried everything above and still have no luck. I tried on both RN 0.72.3 and 0.72.6. I cannot get rid of this error. this was not a problem on RN 0.71
@nica0012 from 0.71 to 0.72 we had to change how the project is structured internally and we introduced some new pods.
some of the third party dependencies needs to be updated in order to support this new setup. I already opened PRs agains RNGestureHandler and RNScreens which are suffering from the problem.
Can you share your Podfile
(enclosed in
as well)?</code> quotes) and the list of your dependencies (enclosed in <code>
That would help me figure out which dependencies needs to be updated. I'm working on a sample project with all the offending dependencies to build in CI to make sure we don't break them again, and the list of the more common ones would be super useful. Thank you! 🙏
Thanks @enchorb , your solution worked for me. 🚀
Just ran into the same issue when adding RN Firebase to project and adding use_frameworks! :linkage => :static
. Can confirm downgrading RN to 0.72.4 resolves the issue. Also may be worth mentioning I'm using pnpm and started my project on 0.72.3 version.
On 0.72.6 the workaround from @enchorb fixed this specific issue for me, but lead to other import problems, finally I got stuck on error resolving FLT_MAX constant.
config[:reactNativePath],
worked for me too
Hi @cipolleschi I have just created a repo for this and im using xcode 14.2. My command to create project is npx react-native init testProject RN 0.72.7 and node version is 16.14.1. I have tried fabric on and off both , but the settings have the issues
I am encountering the same issue. Tried both RN 0.72.4 and 0.72.6 and all the workarounds from here.
There is still React-NativeModulesApple --> 'ReactCommon/TurboModuleBinding.h' file not found
after adding the workaround in pods:
# https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
react_native_post_install(
installer,
config[:reactNativePath],
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if ["React-NativeModulesApple", "React-cxxreact", "RNGestureHandler", "RNScreens", "React-utils", "React-runtimescheduler", "StreamAMGSDK/PlayKit"].any? { |t| t == target.name }
config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) "
config.build_settings["HEADER_SEARCH_PATHS"] << "${PODS_ROOT}/../../node_modules/react-native/ReactCommon"
end
end
end
end
I'll have a look at it tomorrow! Thanks for the repro @vksgautam1986 Can you also invite me as a collaborator, so I can make changes and share them with you more easily?
@cipolleschi please post the fixed changes here I am having the same issue
I'll have a look at it tomorrow! Thanks for the repro @vksgautam1986 Can you also invite me as a collaborator, so I can make changes and share them with you more easily?
Thanks , i have invited you
@vksgautam1986 I'm investigating the issue. I cleaned up a little the Podfile, this is the correct version: https://github.com/vksgautam1986/RnIssue/pull/1
After that, I started investigating the issue. I found that the culprit is react-native-image-picker
which seems to be not compatible with use_frameworks!
Once I remove it with yarn remove react-native-image-picker
it then works seamlessly.
I'm now trying to understand what makes react-native-image-picker
fail so badly and I'm looking for a solution.
Good news, I understood the problem.
Bad news, this is an issue with react-native-image-picker
.
This is the PR that fixes. You can apply it to your node_modules
while the maintainer release a new version (or any other patching mechanism).
Aaaaaanyway, the technical bits if you are interested.
@import
statement here (why? I have no clue! ¯_(ツ)_/¯)RunLoopObserver.h
@cipolleschi I have seen this issue linked to the issue
fatal error: 'ReactCommon/TurboModuleBinding.h' file not found
#import <ReactCommon/TurboModuleBinding.h>
Can you explain how it is related or how changing the node_modules
can fix that issue?
If you are using react-native-image-picker, the reason is that that library is using a Swift import that is not compatible. When the libraries are loaded and react-native-image-picker is loaded, the resolution fails at the first c++ symbol encountered. The suggested patch removed the Swift import, therefore fixing the incompatibility.
Otherwise, TurboModuleBinding is another issue. It wasn't happening in the repro provided by @vksgautam1986
If you had that failure, please provide a repro with the dependencies you are using. React Native builds properly with use_frameworks! And it works with Firebase. If you are seeing that error is because either the Podfile you are using is tampering with the the dependencies setup or there is another dependency that is causing issues.
I need to look into the specifics and I need a repro with all your deps.
@cipolleschi
This issue was mentioned here https://github.com/facebook/react-native/issues/38067#issuecomment-1766411375
as a root cause. I think I misunderstood then, because I didn't understand where the resolution was on that issue.
I can comment there to keep the thread focused but I just didn't see in either issue thread where the fatal error: 'ReactCommon/TurboModuleBinding.h' file not found
was resolved
Good news, I understood the problem. Bad news, this is an issue with
react-native-image-picker
.This is the PR that fixes. You can apply it to your
node_modules
while the maintainer release a new version (or any other patching mechanism).Aaaaaanyway, the technical bits if you are interested.
- Since we started working on the New Architecture, React Native is a C++/Objective-C++ project
- C++ and Swift don't like each other
- react-native-image-picker make use of a Swift
@import
statement here (why? I have no clue! ¯(ツ)/¯)- this means that as soon as a file in library tries to import something from React Native the file resolution will fail as soon as it enocunter a C++ symbol. In our case the
RunLoopObserver.h
thanks fix is working fine for me and i have patched the image picker fix as well and thanks for the technical explination of the issue. Now it's more clear about things
@wkwyatt Your problem is probably different from the react-native-image-picker
.
To help you out I need the exact list of dependencies you are using.
The most likely cause is that there is a dependency that is not properly configured that is trying to access the TurboModuleBinding.h
files without having it in its own search_path.
Thus, the dependency don't find the file and it shows the error.
Therefore, the app fails to build.
However, there are 1309 libraries that have React Native as their dependency. Many of them are deprecated or unmaintained. I can't try and fix them all, so, please, provide a reproducer with your dependencies.
I'm getting the same build error when updating react-native from 0.71.14
to 0.72.7
.
As @cipolleschi pointed out, I have removed react-native related dependencies one by one to find out which one is causing the error, but in the end I still get the error even after removed every deps except react-native itself. I confirmed that my Podfile.lock is the same as reproducer repos' one.
I'm a bit stucked, but does anyone come up with something which might causing the problem? I could deep dive if any clues are provided...
Hi @mokoshi, some debugging questions:
# from the project repo
yarn install
cd ios
bundle install
bundle exec pod deintegrate
bundle exec pod install
open the xcworkspace
file and try to build from Xcode?
```ruby
codeblock)Thank you for the instructions @cipolleschi !
- Does the issue reproduce when you create a new empty app with React Native 0.72.7?
Probably yes...? First of all, I can build the reproducer repo. Additional information:
react-native-image-picker@7.0.3
is still not an problem. It successfully builds.Podfile
as below cause a build error.
diff --git a/ReproducerApp/ios/Podfile b/ReproducerApp/ios/Podfile
index 403498b..60e84a7 100644
--- a/ReproducerApp/ios/Podfile
+++ b/ReproducerApp/ios/Podfile
@@ -17,7 +17,8 @@ prepare_react_native_project!
# dependencies: {
# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
# ```
-flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
+# flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
+flipper_config = FlipperConfiguration.disabled
linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
@@ -27,6 +28,7 @@ end
target 'ReproducerApp' do
config = use_native_modules!
+ use_frameworks! :linkage => :static
# Flags change depending on the env values.
flags = get_default_flags()
(The error is not the same as this GitHub issue focuses on 🤔 )
/Users/mokoshi/projects/reproducer-react-native/ReproducerApp/node_modules/react-native/React/Base/RCTRuntimeExecutorFromBridge.h:10:9: error: include of non-modular header inside framework module 'React.RCTRuntimeExecutorFromBridge': '/Users/mokoshi/projects/reproducer-react-native/ReproducerApp/ios/Pods/Headers/Public/React-runtimeexecutor/ReactCommon/RuntimeExecutor.h'
/Users/mokoshi/projects/reproducer-react-native/ReproducerApp/node_modules/react-native-image-picker/ios/ImagePickerManager.h:1:9: Could not build module 'React'
- can you run: ...
I followed your instructions, but still having the same error: react_native_assert.h not found
- Can you share your podfile?
IIUC, you are building the reproducer with a static framework setup. 🤔 We have tests in CI for the framework setup and they are passing. So I'm a bit skeptical that this is the root problem, but it can be a way in which it manifest.
Can I ask you to create a reproducer by:
react_native_assert.h not found
one)In that way I can download the code and investigate.
What I think is happening is another dependency that is not properly configured which is not depending on React-debug
which exposes the react_native_assert.h
header.
Thank you for your help. I'm trying to create a minimum reproducible example from each side, my own repository and the empty project. I will share here if I create that successfully.
Thank you so much! PSA: I'll be on PTO from tomorrow until the 12th of December (6-7 working days). I hope this would not be a major issue.
Description
I get the error: 'react/debug/react_native_assert.h' file not found, React-utils/RunLoopObserver. This is my Podfile:
{ "name": "POK", "version": "0.0.1", "private": true, "scripts": { "postinstall": "patch-package", "android": "react-native run-android", "ios": "react-native run-ios", "lint": "eslint .", "start": "react-native start", "test": "jest" }, "dependencies": { "@react-native-async-storage/async-storage": "^1.19.0", "@react-native-clipboard/clipboard": "^1.11.2", "@react-native-community/blur": "^4.3.2", "@react-native-community/netinfo": "^9.4.1", "@react-native-firebase/analytics": "^18.1.0", "@react-native-firebase/app": "^18.1.0", "@react-native-firebase/crashlytics": "^18.1.0", "@react-native-firebase/messaging": "^18.1.0", "@react-navigation/bottom-tabs": "^6.5.8", "@react-navigation/native": "^6.1.7", "@react-navigation/native-stack": "^6.9.13", "@react-navigation/stack": "^6.3.17", "axios": "^1.4.0", "buffer": "^6.0.3", "card-validator": "^8.1.1", "expo-modules-core": "^1.5.4", "fbjs": "^3.0.5", "isomorphic-webcrypto": "^2.3.8", "js-base64": "^3.7.5", "lodash": "^4.17.21", "lodash.compact": "^3.0.1", "lodash.every": "^4.6.0", "lodash.pick": "^4.4.0", "lodash.values": "^4.3.0", "lottie-ios": "3.4.1", "lottie-react-native": "^5.1.6", "moment-timezone": "^0.5.43", "patch-package": "^7.0.0", "postinstall-postinstall": "^2.1.0", "prop-types": "^15.8.1", "react": "18.2.0", "react-hook-form": "^7.45.1", "react-native": "0.72.1", "react-native-biometrics": "^3.0.1", "react-native-blob-util": "^0.18.3", "react-native-bootsplash": "^4.7.4", "react-native-calendars": "^1.1299.0", "react-native-camera": "^4.2.1", "react-native-confirmation-code-field": "^7.3.1", "react-native-contacts": "^7.0.5", "react-native-device-info": "^10.7.0", "react-native-fast-image": "^8.6.3", "react-native-flash-message": "^0.4.1", "react-native-flip-card": "^3.5.7", "react-native-geocoding": "^0.5.0", "react-native-geolocation-service": "^5.3.1", "react-native-gesture-handler": "^2.12.0", "react-native-google-places-autocomplete": "^2.5.1", "react-native-image-picker": "^5.6.0", "react-native-jumio-mobilesdk": "https://github.com/Jumio/mobile-react.git#v4.5.0", "react-native-keychain": "^8.1.1", "react-native-linear-gradient": "^2.7.3", "react-native-loading-spinner-overlay": "^3.0.1", "react-native-localization": "^2.3.2", "react-native-localize": "^3.0.2", "react-native-map-clustering": "^3.4.2", "react-native-maps": "^1.7.1", "react-native-masked-text": "^1.13.0", "react-native-mmkv": "^2.10.1", "react-native-modal": "^13.0.1", "react-native-modalize": "^2.1.1", "react-native-pdf": "^6.7.1", "react-native-permissions": "^3.8.3", "react-native-qrcode-scanner": "^1.5.5", "react-native-qrcode-svg": "^6.2.0", "react-native-radial-gradient": "^1.1.3", "react-native-radio-buttons": "^1.0.0", "react-native-reanimated": "^3.3.0", "react-native-safe-area-context": "^4.6.4", "react-native-screens": "^3.22.1", "react-native-skeleton-content-nonexpo": "^1.0.13", "react-native-svg": "^13.9.0", "react-native-toast-message": "^2.1.6", "react-native-vector-icons": "^9.2.0", "react-native-webview": "^13.2.2", "react-redux": "^8.1.1", "reanimated-bottom-sheet": "^1.0.0-alpha.22", "redux": "^4.2.1", "redux-logger": "^3.0.6", "redux-persist": "^6.0.0", "redux-thunk": "^2.4.2", "reselect": "^4.1.8", "socket.io-client": "^4.7.1", "validate.js": "^0.13.1" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.7", "@tsconfig/react-native": "^3.0.0", "@types/metro-config": "^0.76.3", "@types/react": "^18.0.24", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.2.1", "babel-plugin-module-resolver": "^5.0.0", "eslint": "^8.19.0", "eslint-plugin-import": "^2.27.5", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.76.5", "prettier": "^2.4.1", "react-native-svg-transformer": "^1.0.0", "react-test-renderer": "18.2.0", "typescript": "4.8.4" }, "engines": { "node": ">=16" } }
Snack, code example, screenshot, or link to a repository