I'm running a react-native / expo project and I have been unable to install cocoapods since the OS update. I've tried to rule out essentially every other possibility (changing the install of cocoapods from homebrew to gem-install, changing my package manager from pnpm to yarn based on this guidance https://github.com/facebook/react-native/issues/36639, running npx expo-doctor and implementing all of the suggestions). There has been no change to my package.json, and no change to my Podfile but install fails with this error every time in a project that was completely stable before the os update
Command `pod install` failed.
└─ Cause: Invalid `Podfile` file: cannot load such file -- /Users/aaronwilson/code/shady-pines-radio-mobile/node_modules/react-native/node_modules/@react-native-community/cli-platform-ios/native_modules.rb
Debugger listening on ws://127.0.0.1:63887/95c74ddc-96c1-4f12-82d7-d10b8ae57211
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
Waiting for the debugger to disconnect....
# from /Users/aaronwilson/code/shady-pines-radio-mobile/ios/Podfile:2
# -------------------------------------------
# require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
> require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
#
# -------------------------------------------
For reference, this is my package.json
{
"name": "shady-pines-radio-mobile",
"main": "expo-router/entry",
"version": "0.0.3",
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"test": "jest --watchAll"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"@babel/preset-env": "^7.22.10",
"@expo/metro-runtime": "^2.2.5",
"@expo/vector-icons": "^13.0.0",
"@gorhom/bottom-sheet": "^4",
"@react-native-google-signin/google-signin": "^10.0.1",
"@react-native-masked-view/masked-view": "^0.2.9",
"@react-navigation/bottom-tabs": "^6.5.8",
"@react-navigation/drawer": "^6.6.3",
"@react-navigation/native": "^6.0.2",
"@react-navigation/native-stack": "^6.9.13",
"@react-navigation/stack": "^6.3.17",
"@reduxjs/toolkit": "^1.9.5",
"axios": "^0.27.2",
"date-fns": "^2.30.0",
"expo": "~49.0.7",
"expo-apple-authentication": "~6.1.0",
"expo-constants": "^14.4.2",
"expo-dev-client": "^2.4.6",
"expo-font": "~11.4.0",
"expo-image": "^1.3.2",
"expo-linking": "~5.0.2",
"expo-modules-autolinking": "^1.5.0",
"expo-modules-core": "~1.5.10",
"expo-router": "2.0.0",
"expo-splash-screen": "~0.20.5",
"expo-status-bar": "~1.6.0",
"expo-system-ui": "~2.4.0",
"expo-web-browser": "~12.3.2",
"http": "0.0.1-security",
"lodash": "^4.17.21",
"metro": "^0.76.7",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-native": "0.72.3",
"react-native-dotenv": "^3.4.9",
"react-native-fs": "^2.20.0",
"react-native-gesture-handler": "~2.12.0",
"react-native-onesignal": "^5.0.0",
"react-native-reanimated": "^3.3.0",
"react-native-safe-area-context": "4.6.3",
"react-native-screens": "~3.22.0",
"react-native-track-player": "^3.2.0",
"react-native-vector-icons": "^10.0.0",
"react-native-web": "~0.19.6",
"react-native-webview": "^13.2.2",
"react-redux": "^8.1.2"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0-0",
"@babel/plugin-proposal-optional-chaining": "^7.21.0",
"@babel/plugin-transform-arrow-functions": "^7.0.0-0",
"@babel/plugin-transform-shorthand-properties": "^7.0.0-0",
"@babel/plugin-transform-template-literals": "^7.0.0-0",
"@babel/runtime": "^7.22.10",
"@types/jest": "^29.5.3",
"@types/lodash": "^4.14.197",
"@types/react": "~18.2.20",
"@types/react-native": "^0.72.2",
"@types/react-test-renderer": "^18.0.0",
"@types/webpack-env": "^1.18.1",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"confusing-browser-globals": "^1.0.11",
"eas": "^0.1.0",
"eslint": "^8.47.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^9.0.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-import-resolver-node": "^0.3.9",
"eslint-import-resolver-typescript": "^3.6.0",
"eslint-plugin-import": "^2.28.0",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-no-date-parsing": "^1.0.1",
"eslint-plugin-no-relative-import-paths": "^1.5.2",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-react": "^7.33.1",
"eslint-plugin-react-hooks": "^4.3.0",
"eslint-plugin-react-native": "^4.0.0",
"eslint-plugin-unused-imports": "^3.0.0",
"jest": "^29.2.1",
"jest-expo": "~49.0.0",
"prettier": "^3.0.2",
"react-test-renderer": "18.2.0",
"typescript": "^5.1.3"
},
"overrides": {
"react-refresh": "~0.14.0"
},
"resolutions": {
"react-refresh": "~0.14.0"
},
"private": true,
"pnpm": {
"overrides": {
"semver@>=7.0.0 <7.5.2": ">=7.5.2"
}
}
}
Edit: still no resolution after 20 days. Tracking the issue against expo here if anyone else runs into the same issue: https://github.com/expo/expo/issues/25047
Edit: @kidcapital came through with the solution (although it's a comment so I can't mark it as the accepted answer)
Actually, for me, I was able to resolve the issue on my system by upgrading from ruby 2.7 to 3.2.2
I would try to:
node_modules
, pods folder, maybe pod lock file, and surely try to use yarn while doing that.react-native
, currently the latest is 0.72.6
.expo
and its modules.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With