Home > database >  Invariant Violation: Native module cannot be null.only IOS not android
Invariant Violation: Native module cannot be null.only IOS not android

Time:01-20

i have the Invariant Violation: Native module cannot be null error and the 2nd error down below. I found online the issue might have to do with not having an ios folder in a module directory, i looked in each of the folders in the local system and on github with them all containing the ios folder

{
  "main": "index.js",
  "scripts": {
    "android": "expo run:android",
    "ios": "expo run:ios",
    "web": "expo start --web",
    "start": "expo start --dev-client"
  },
  "dependencies": {
    "@invertase/react-native-apple-authentication": "^2.1.5",
    "@react-native-community/clipboard": "^1.5.1",
    "@react-native-community/datetimepicker": "4.0.0",
    "@react-native-google-signin/google-signin": "^7.0.1",
    "@react-native-picker/picker": "2.2.1",
    "@react-navigation/bottom-tabs": "^6.0.9",
    "@react-navigation/drawer": "^6.1.8",
    "@react-navigation/native": "^6.0.6",
    "@react-navigation/native-stack": "^6.2.5",
    "expo": "^44.0.0",
    "expo-file-system": "~13.1.0",
    "expo-splash-screen": "~0.14.1",
    "expo-status-bar": "~1.2.0",
    "expo-updates": "~0.11.3",
    "from": "^0.1.7",
    "react": "^17.0.2",
    "react-dom": "17.0.1",
    "react-native": "^0.66.4",
    "react-native-biometrics": "^2.1.4",
    "react-native-canvas": "^0.1.38",
    "react-native-chart-kit": "^6.11.0",
    "react-native-chartjs": "^1.0.3",
    "react-native-document-picker": "^7.1.1",
    "react-native-fbsdk": "^3.0.0",
    "react-native-file-access": "^2.1.0",
    "react-native-flash-message": "^0.2.0",
    "react-native-gesture-handler": "~2.1.0",
    "react-native-gifted-charts": "^0.2.2",
    "react-native-git-upgrade": "^0.2.7",
    "react-native-haptic-feedback": "^1.13.0",
    "react-native-image-picker": "^4.4.2",
    "react-native-image-viewing": "^0.2.1",
    "react-native-ios-context-menu": "^1.7.0",
    "react-native-keyboard-accessory": "^0.1.16",
    "react-native-keyboard-aware-scroll-view": "^0.9.5",
    "react-native-keychain": "^8.0.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-mmkv": "^1.5.4",
    "react-native-paper": "^4.10.1",
    "react-native-paper-dates": "^0.8.0",
    "react-native-picker-select": "^8.0.4",
    "react-native-qrcode-svg": "^6.1.2",
    "react-native-reanimated": "~2.3.1",
    "react-native-safe-area-context": "3.3.2",
    "react-native-screens": "~3.10.1",
    "react-native-svg": "12.1.1",
    "react-native-swipe-gestures": "^1.0.5",
    "react-native-vector-icons": "^9.0.0",
    "react-native-view-pdf": "^0.12.2",
    "react-native-web": "0.17.1",
    "react-native-webview": "11.15.0"
  },
  "devDependencies": {
    "@babel/core": "^7.12.9",
    "babel-plugin-transform-remove-console": "^6.9.4"
  },
  "private": true,
  "name": "MyApp",
  "version": "1.0.0",
  "expo": {
    "autolinking": {
      "exclude": [
        "expo-file-system",
        "expo-updates"
      ]
    }
  }
}

 Invariant Violation: "main" has not been registered. This can happen if:
  • Metro (the local dev server) is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.
  • A module failed to load due to an error and AppRegistry.registerComponent wasn't called.

I look through https://reactnative.dev/docs/libraries and stackoverflow. I did npx pod install and npx react-native run-ios but that came back with the same error.

index.js

import { registerRootComponent } from 'expo';

import App from './App';
// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
// It also ensures that whether you load the app in Expo Go or in a native build,
// the environment is set up appropriately
registerRootComponent(App);

any help would be appreciated

** Edit - 20/1/2022

i finally fixed it by changing

module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['module:metro-react-native-babel-preset']
  };

};

to

module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['module:metro-react-native-babel-preset'],
    plugins: ['react-native-reanimated/plugin']
  };
};

CodePudding user response:

Check the library @react-navigation/drawer compatibility with IOS and Android respectively , link it manually sometimes autolinking doesn't work. Ensure you are running correct project , clean build and install pod and check it out.

  •  Tags:  
  • Related