Closed hauhuynh1208 closed 4 years ago
Confirm that only iOS platform experience this bug, Android still work properly.
I haven't been able to reproduce it. I am using Realm JS v3.5.0 and React Native v0.61.2 but on macOS v10.14.6 and Xcode 11.0 (build version 11A420a).
Running into this same issue on a pre-existing project that was previously using Realm JS v2.29.2. On macOS v10.4.6, RN v.0.61.2 and Xcode 11.2.1.
@kneth I created a new project and also added realm
, it is working normally. However, my pre-existing project still throw error. I confirm that my pre-existing project used to run normally and I didn't update any packages. How can I share my pre-existing project (private project) so you can take a look?
@gangwarily After I added all the packages from pre-existing project to the new one, my new project ran into the same issue as the existed project. Let's compare to see which packages we have the same
"@react-native-community/geolocation": "^2.0.2",
"@react-native-community/netinfo": "^4.4.0",
"events": "^3.0.0",
"formatcoords": "^1.1.3",
"geolib": "^3.0.4",
"lodash": "^4.17.15",
"moment": "^2.24.0",
"native-base": "^2.13.8",
"prop-types": "^15.7.2",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-datepicker": "^1.7.2",
"react-native-device-info": "^4.0.1",
"react-native-geolocation-service": "^3.1.0",
"react-native-gesture-handler": "^1.4.1",
"react-native-image-picker": "^1.1.0",
"react-native-location": "^2.5.0",
"react-native-maps": "0.25.0",
"react-native-modal": "^11.1.0",
"react-native-reanimated": "^1.2.0",
"react-native-screens": "^1.0.0-alpha.23",
"react-native-share": "^2.0.0",
"react-native-svg": "^9.11.1",
"react-native-tab-view": "^2.9.0",
"react-native-uuid": "^1.4.9",
"react-native-vector-icons": "^6.6.0",
"react-navigation": "^4.0.10",
"react-navigation-drawer": "^2.2.2",
"react-navigation-stack": "^1.9.4",
"react-redux": "^7.1.0",
"realm": "^3.5.0",
"redux": "^4.0.4",
"redux-thunk": "^2.3.0",
"rn-fetch-blob": "^0.11.2",
"victory-native": "^33.0.0"
@hauhuynh1208 You can send it to help--at--realm.io
and mention that it is for me. Eventually I will get it :smile:.
@kneth I think I found the way how you can reproduce the bug. First of all, init the fresh project. Then install realm, make sure app is running properly. Then you install any packages (such as redux, react-native-maps ...). Then bug occurs
react-native init example
cd example/
yarn add realm
cd ios/ && pod install
cd ../
yarn add redux
I sure you will encounter this bug :)
@hauhuynh1208 I do encounter the bug.
We believe it is a yarn
issue, and we are working on a solution (see #2623). When you do yarn add redux
, the node_modules/realm
folder is reset, and the header and binary files you need, are deleted!
Currently, two workarounds are possible: use npm
instead of yarn
or add the line "postinstall": "node node_modules/realm/scripts/download-realm.js ios --sync"
to the scripts
section in your package.json
(see https://github.com/realm/realm-js/issues/2617#issuecomment-559446483).
@kneth, I'm using npm and running into the same issue. Not sure if there are multiple causes for this :/
@kneth I have tried postinstall solution before, and it still fail. And I just tried npm, but still no luck. Did you do these solutions successfully?
P/s for my existed project, when I do postinstall ...
, the error that xcode cannot find realm has been passed. But I continue to fall in the problem I described in this thread title.
What happens if you run pod install
as the last step before react-native run-ios
?
@hauhuynh1208 Search your ios/YourProject.xcodeproj for "realm". Mine had dozens of realm entries.
I think this may be a problem when upgrading existing projects. Not sure how best to solve.
Option A This is what I did.
1) react-native unlink realm 2) yarn remove realm 3) Manually remove all the realm lines from ios/YourProject.xcodeproj 4) yarn add realm
Option B This might help understand what realm is trying to do. ( Not sure if it is correct or not )
1) Create a new Awesome project and add realm 2) Compare the new ios/Awesome.xcodeproj to your project and copy realm related lines
I ended up rolling back to "realm": "^3.2.0" and manually adding and linking the realm project in xcode.
I spent so much time on this trying so many things. I and not sure what finally sorted things out.
File: react-native.config.js
module.exports = {
dependencies: {
realm: {
platforms: {
ios: null, // disable iOS platform, other platforms will still autolink if provided
},
},
},
};
I am sticking with realm 3.2.0 for now:
"react": "^16.9.0",
"react-native": "0.60.6",
"realm": "3.2.0",
"redux": "^4.0.4",
@esutton while I applaud your eager to find alternative solutions and I am happy you personally got your stuff working, it really doesn't need to be that difficult.. I believe the minority of Realm JS issues we're seeing on iOS stem from old files in ios/build
, not running pod install
or hacked up XCode projects.
If you create your own issue (with a link to your project on GitHub or a request for an email address to which you can send it privately), I'll be happy to take a look at what's wrong and help resolve any Realm related issues.
@kraenhansen In tried rm -rf ios/build multiple times without success. Adding postinstall work-around did not help. I did not forget pod install
Yes, something appeared to mess up Xcode project. This occurred before I manually edited the xcode project. I am also using redux.
@kraenhansen In my existed project, I always remember to pod install
every after I added yarn add realm
. The pod install process is normal, installing Realm (3.5.0) and GCDWebServer (3.5.3).
@gangwarily Did you remove the contents of ios/build
first?
@hauhuynh1208 @esutton You use try to use npm
instead of yarn
just to see if it makes a difference?
@kneth I tried npm
. It throws error that Missing Realm constructor ...
@hauhuynh1208 Can you create a small project which can reproduce the issue and share it with us?
@gangwarily Did you remove the contents of
ios/build
first?
I did yeah. Pretty much tried all the things @hauhuynh1208 tried out. :/
@kneth here is my small git: https://github.com/hauhuynh1208/example.git
I did the following steps:
@hauhuynh1208 As outlined earlier, the command yarn add redux
will remove the binary files used by Realm. I don't see a postinstall
script in package.json
.
@kneth I followed your instruction, the example project is working normally. But I applied the same to my existed project, and the project still fail to build. How can I send you this existed project privately so that you can help me take a look?
I got the same issues
"react-native": "0.61.2", "realm": "^3.5.0",
If run $ react-native run-ios
- its ok
If run project in xCode to simmulator - Error: Missing Realm constructor. Did you run "pod install"? Please see https://realm.io/docs/react-native/latest/#missing-realm-constructor for troubleshooting
If remove folder ios/build
and again run project in xCode - again Error "Missing Realm constructor" and folder ios/build
is empty
UPD: Go to xCode menu Product -> Clean Build Folder
- Yesssss YO!
Its work
@ruslanaplid I even though cannot run project by react-native run-ios
:((
@hauhuynh1208 we just released a version of Realm JS with a fix that could very well solve your issue too. I just ran the following without errors:
npx react-native init example
cd example/
yarn add realm
cd ios/ && pod install
cd ../
yarn add redux
yarn ios
Can you confirm that the latest version of Realm JS (v2.6.0) solves your issue?
@kraenhansen I confirm that my example project now work perfectly. But my existed project still fail. Btw, thank you very much for your help :D
@hauhuynh1208 my best suggestion is to initialize a new React Native project, copy over the dependencies from the package.json
file, all your JavaScript code and any assets / resources that you might have added. It's the most effective way of unbreaking an XCode project in my experience.
I'm closing this issue for now, please open a new with a link for a GitHub repository with a minimal reproduction if you find a similar issue (or can distill your existing project somehow).
I found the solution:
ios
folder from existed project, and replace by the ios
folder which is created from the new one.node_modules
and yarn.lock
/package-lock.json
Podfile
ios
folder dont includes Pods/
and Podfile.lockHope my workaround could help who are got stuck on running existed project with realm :)
"react-native": "0.61.2", "realm": "^3.5.0",
If run
$ react-native run-ios
- its okIf run project in xCode to simmulator - Error: Missing Realm constructor. Did you run "pod install"? Please see https://realm.io/docs/react-native/latest/#missing-realm-constructor for troubleshooting
If remove folder
ios/build
and again run project in xCode - again Error "Missing Realm constructor" and folderios/build
is emptyUPD: Go to xCode menu
Product -> Clean Build Folder
- Yesssss YO! Its work
I spent 2 hours on this, and this fixed my problem. Be sure to tap options to make Clean -> Clean Build Folder
"react-native": "0.61.2", "realm": "^3.5.0", If run
$ react-native run-ios
- its ok If run project in xCode to simmulator - Error: Missing Realm constructor. Did you run "pod install"? Please see https://realm.io/docs/react-native/latest/#missing-realm-constructor for troubleshooting If remove folderios/build
and again run project in xCode - again Error "Missing Realm constructor" and folderios/build
is empty UPD: Go to xCode menuProduct -> Clean Build Folder
- Yesssss YO! Its workI spent 2 hours on this, and this fixed my problem. Be sure to tap options to make Clean -> Clean Build Folder
i spend 2 hours too, and then I found your answer ...
"react-native": "0.61.2", "realm": "^3.5.0",
If run
$ react-native run-ios
- its okIf run project in xCode to simmulator - Error: Missing Realm constructor. Did you run "pod install"? Please see https://realm.io/docs/react-native/latest/#missing-realm-constructor for troubleshooting
If remove folder
ios/build
and again run project in xCode - again Error "Missing Realm constructor" and folderios/build
is emptyUPD: Go to xCode menu
Product -> Clean Build Folder
- Yesssss YO! Its work
One thing that wasn't obvious to me was to hold the option key while selecting the product menu to get the Clean Build Folder...
option
Cleaning the build folder fixed it for me
I'm facing the exact same cleaning build folder didn't work. any help? RN: 0.61.5, Realm: 3.2.0
Same problem :( Tried everything from cleaning build folder, to deintegrate pods, restarted everything. Am trying to upgrade from RN 0.61.2 to 0.62 on Realm 3.6
I have this problem too, I upgrade Realm 3.2.0 to Realm 10.2.0 due to iOS 14.5 beta crash, but always encounter this missing Realm constructor issue, this really drive me to crazy, I have tried all the ways I could think of and read all the solutions above, still cannot resolve this. I'm really upset about this, this issue keeps showing up to developers but still cannot be resolved totally, I decide to remove this entirely from my project and never use it again!
I have the same issue like @mrarronz -> upgrading from Realm 3.2.0 to the newest 10.2.0.
Cleaning the build folder, cleaning npm cache, reinstalling node modules and cocoa pods and running react-native link realm
helped. It is weird that the auto linking still does not work.
@mrarronz @mklb Are you upgrading React Native and Realm at the same time?
@kneth I upgrade React Native to 0.63 and Realm to v10.2.0, always encounter this issue. After struggling for two days, I finally resolve this issue. It takes a big effort to replace this library in my project so I have to keep it at this moment. Since the iOS 14.5 beta crash seems already be resolved in v6(#3557), so I just upgrade Realm to v6.1.6 instead of v10.2.0.
Here are my steps to fix this, hope it would be helpful to anyone who are facing this problem.
rm -rf node_modules
rm -rf ios/Pods
yarn cache clean
, steps 1-3 are not required due to my testing.yarn install
cd ios && pod install && cd ..
react-native run-ios
RealmReact.xcodeproj
to the app project from the folder node_modules/realm/react-native/ios
, add libRealmReact.a
in the app target's build phase - link binary with libraries, build project againRealmJS.xcodeproj
reference from RealmReact.xcodeproj
, and rebuild on the simulator, this time it succeeds.RealmReact.xcodeproj
reference totally from the project, the libRealmReact.a
will be removed along with RealmReact.xcodeproj
. Archive again, finally succeed.What a painful process! I finally resolve this after trying a lot, but I have no confidence that it would always run successfully on somewhere else.
@mrarronz Thank you for providing a detailed guide on how to upgrade.
@mrarronz @mklb Are you upgrading React Native and Realm at the same time?
No I did not update React Native. However the last time I updated Realm I used an older version of React Native.
Goals
Using Realm normally
Expected Results
Actual Results
after install Realm and
pod install
, app will launch with errorMissing Realm constructor
. After research through github, I found that we should linklibRealmReact.a
toLink binary with libraries
. But after linked, app throw error that155 duplicate symbols for architecture x86_64
.Steps to Reproduce
react-native init exampleProject yarn add realm cd ios && pod install
Code Sample
import Realm from 'realm
Version of Realm and Tooling