Kamil Kamili
Kamil Kamili

Reputation: 1927

Duplicate Module Name: react-native

I ran Pod Update in my XCode Project and now my project isn't compiling due to duplicate modules being downloaded. Anyone know any solutions?

Looking for JS files in
   /Users/.../App/Finalv2 


Metro Bundler ready.

Loading dependency graph...jest-haste-map: @providesModule naming collision:
  Duplicate module name: react-native
  Paths: /Users/.../App/Finalv2/node_modules/react-native/package.json collides with /Users/.../App/Finalv2/ios/Pods/React/package.json

This warning is caused by a @providesModule declaration with the same name across two different files.
Loading dependency graph, done.

UPDATE: I deleted my node_modules folder and package.lock.json and ran npm install but the issue is still there

EDIT:

Adding my Package.json

{
  "name": "sample-app",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "@expo/vector-icons": "^6.2.2",
    "art": "^0.10.1",
    "axios": "^0.17.1",
    "expo": "^24.0.2",
    "firebase": "^4.6.0",
    "lodash": "^4.17.4",
    "moment": "^2.19.3",
    "native-base": "^2.3.3",
    "prop-types": "^15.6.0",
    "react": "^16.3.1",
    "react-native": "^0.55.3",
    "react-native-camera": "^0.10.0",
    "react-native-circular-progress": "git+https://github.com/kk1429/react-native-circular-progress.git",
    "react-native-countdown-circle": "^2.0.0",
    "react-native-country-picker-modal": "^0.5.1",
    "react-native-device-info": "^0.13.0",
    "react-native-easy-grid": "^0.1.16",
    "react-native-elements": "^0.18.5",
    "react-native-fcm": "^11.2.0",
    "react-native-fetch-blob": "^0.10.8",
    "react-native-firebase": "^4.1.0",
    "react-native-linear-gradient": "^2.4.0",
    "react-native-linkedin": "^1.2.1",
    "react-native-material-ui": "^1.19.0",
    "react-native-navigation": "^1.1.471",
    "react-native-progress": "^3.4.0",
    "react-native-pull-refresh": "^1.0.0",
    "react-native-rename": "^2.2.2",
    "react-native-svg": "^5.4.2",
    "react-native-svg-animated-linear-gradient": "^0.1.8",
    "react-native-swiper": "^1.5.13",
    "react-native-tag-input": "git+https://github.com/kk1429/react-native-tag-input.git",
    "react-native-thumbnail-video": "0.0.8",
    "react-native-vector-icons": "^4.4.2",
    "react-native-video": "^2.0.0",
    "react-navigation": "^1.0.0-beta.19",
    "react-redux": "^5.0.6",
    "react-save-refs": "^1.0.2",
    "redux": "^3.7.2",
    "redux-devtools-extension": "^2.13.2",
    "redux-persist": "^5.3.4",
    "redux-thunk": "^2.2.0",
    "whatwg-fetch": "^2.0.3"
  },
  "devDependencies": {
    "babel-jest": "22.1.0",
    "babel-preset-react-native": "4.0.0",
    "jest": "22.1.4",
    "react-test-renderer": "16.2.0"
  },
  "jest": {
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "./assets/fonts/"
    ]
  }
}

UPDATE

Running npm install gives a weird error

> [email protected] install /Users/.../App/Finalv2/node_modules/fsevents
> node install

[fsevents] Success: "/Users/.../App/Finalv2/node_modules/fsevents/lib/binding/Release/node-v64-darwin-x64/fse.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile

> [email protected] install /Users/kaaddevelopers/Documents/Clipme/App/Finalv2/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! Tried to download(403): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v64-darwin-x64-unknown.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for [email protected] and [email protected] (node-v64 ABI, unknown) (falling back to source compile with node-gyp)

Upvotes: 40

Views: 35964

Answers (6)

edvard chen
edvard chen

Reputation: 2784

The root cause of this issue is that there are more that one copy of react-native module in your watch folders (including the projectRoot).

  1. You can delete those duplicate ones by reinstallation, like many answers suggested.
  2. If can't, ignore others through blacklist option

Upvotes: 0

Heo Đất Hades
Heo Đất Hades

Reputation: 1633

In my case, because I linked a library by pod, so it auto install react to pods. So I updated my podfile:

target 'MyProject' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  rn_path = '../node_modules/react-native'
  pod 'React', path: rn_path, subspecs: [
   'Core',
   'CxxBridge',
   'DevSupport',
   'RCTActionSheet',
   'RCTAnimation',
   'RCTGeolocation',
   'RCTImage',
   'RCTLinkingIOS',
   'RCTNetwork',
   'RCTSettings',
   'RCTText',
   'RCTVibration',
   'RCTWebSocket',
 ]
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
//Another libraries here
  pod 'RNImageTools', :path => '../node_modules/react-native-image-tools-wm'


  post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

end

Then I remove Pods folder and run pod install. That alls.

Upvotes: 0

Cyrus Zei
Cyrus Zei

Reputation: 2660

remove the "React" folder inside of your "Pod" folder

add this inside of your pod file at the bottom after the last end

post_install do |installer|
  installer.pods_project.targets.each do |target|

# The following is needed to ensure the "archive" step works in XCode.
# It removes React & Yoga from the Pods project, as it is already included in the main project.
# Without this, you'd see errors when you archive like:
# "Multiple commands produce ... libReact.a"
# "Multiple commands produce ... libyoga.a"

    targets_to_ignore = %w(React yoga)

    if targets_to_ignore.include? target.name
      target.remove_from_project
    end

  end
end

remove your Pods folder and then go pod install

Upvotes: 1

TheJoker
TheJoker

Reputation: 110

Adding to @Dehli's answer, this could happen if:

  1. You have react-native as 'dependency' for a react-native module

    Solution: Move react-native to 'peerDependency' in package.json

  2. You've moved to peerDependency and have your application's package-lock.json listing react-native as a dependency to your module

    Solution: Delete package-lock.json in your application, clean npm_modules folder and run npm install again

Upvotes: 0

Dehli
Dehli

Reputation: 5960

I just spent some time searching around for a solution and finally found something that worked! I'm not using Firebase, but the discussion here was able to help: https://github.com/invertase/react-native-firebase/issues/414 You have to add two lines to your Podfile.

# Add these to your Podfile
pod 'React', :path => '../node_modules/react-native'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

Then run the following to make sure you reinstall your CocoaPods.

cd ios
rm -rf Pods
pod install

Upvotes: 151

MoKhajavi75
MoKhajavi75

Reputation: 2702

Try:

  1. watchman watch-del-all
  2. rm -fr $TMPDIR/react-*
  3. erase jest-cache folder
  4. rm -rf node_modules
  5. npm install
  6. npm cache clean && npm start -- --reset-cache

Update

Also try to download the latest node js and run npm install -g npm

Upvotes: 3

Related Questions