react-native icon indicating copy to clipboard operation
react-native copied to clipboard

Invariant Violation: Module RCTDeviceEventEmitter is not a registered callable module

Open piiih opened this issue 5 years ago • 16 comments

Description

I'm trying to create a fresh react-native project with a fresh native module without any new code. I installed the MyLibrary into MyApp using yarn add file:/path/to/module, I don't know if it could be the problem :/

image

React Native version:

System: OS: macOS Mojave 10.14.6 CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz Memory: 452.77 MB / 16.00 GB Shell: 3.2.57 - /bin/bash Binaries: Node: 12.16.3 - /usr/local/bin/node Yarn: 1.12.3 - /usr/local/bin/yarn npm: 6.14.4 - /usr/local/bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman Managers: CocoaPods: 1.9.1 - /usr/local/bin/pod SDKs: iOS SDK: Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1 Android SDK: API Levels: 22, 23, 25, 27, 28 Build Tools: 25.0.3, 26.0.2, 28.0.3 System Images: android-28 | Intel x86 Atom_64 Android NDK: 19.2.5345600 IDEs: Android Studio: 3.6 AI-192.7142.36.36.6392135 Xcode: 11.3.1/11C504 - /usr/bin/xcodebuild Languages: Java: 1.8.0_252 - /usr/bin/javac Python: 2.7.16 - /usr/local/bin/python npmPackages: @react-native-community/cli: Not Found react: 16.11.0 => 16.11.0 react-native: 0.62.2 => 0.62.2 npmGlobalPackages: react-native: Not Found

I'm using react-native CLI from npx.

Steps To Reproduce

I just did exactly what is in this guide https://reactnative.dev/docs/native-modules-setup and when I try to run my app on my phone I got the screenshot error.

piiih avatar May 01 '20 22:05 piiih

I'm having this issue as well

AngeloMateus avatar May 14 '20 10:05 AngeloMateus

+1

alex521 avatar May 27 '20 23:05 alex521

+1

ChannelJuanNews avatar Jun 15 '20 06:06 ChannelJuanNews

I experienced this problem as well, and after a whole day of trying to fix the problem, what worked for me was removing the devDependencies in the package.json of MyLibrary. This would install another copy of React Native within the library's node_modules, which seemed to cause the error above.

Make sure you also remove node_modules and rerun npm install or yarn in the directory of MyLibrary after making this change. This is what the directory structure of MyLibrary (I called it MusicKit) looked like for me after I got it working:

Screenshot from 2020-06-25 08-06-51

And this is what the package.json looked like:

{
  "name": "react-native-music-kit",
  "title": "React Native Music Kit",
  "version": "1.0.0",
  "description": "TODO",
  "main": "index.js",
  "files": [
    "README.md",
    "android",
    "index.js",
    "ios",
    "react-native-music-kit.podspec"
  ],
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/github_account/react-native-music-kit.git",
    "baseUrl": "https://github.com/github_account/react-native-music-kit"
  },
  "keywords": [
    "react-native"
  ],
  "author": {
    "name": "Your Name",
    "email": "[email protected]"
  },
  "license": "MIT",
  "licenseFilename": "LICENSE",
  "readmeFilename": "README.md",
  "peerDependencies": {
    "react": "^16.8.1",
    "react-native": ">=0.60.0-rc.0 <1.0.x"
  }
}

leonsilicon avatar Jun 25 '20 12:06 leonsilicon

I'm having this issue as well

gokul-t avatar Jul 07 '20 09:07 gokul-t

Same -- even from a raw npx react-native init AwesomeProject, with no code added at all.

On startup:

2020-08-21 14:05:08.332377-0500 Hence[32671:356062] [javascript] Invariant Violation: Module RCTLog is not a registered callable module (calling logIfNoNativeHook) 2020-08-21 14:05:08.335338-0500 Hence[32671:356062] [javascript] Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication) 2020-08-21 14:05:08.336524-0500 Hence[32671:356062] [javascript] Invariant Violation: Module RCTDeviceEventEmitter is not a registered callable module (calling emit)

wballard avatar Aug 21 '20 18:08 wballard

If it helps anyone:

metro.config.js

const path = require("path");
const watchFolders = [
  //Relative path to packages directory because I'm in yarn workpspaces
  path.resolve(__dirname + "/../.."),
];
module.exports = {
  resolver: {
    extraNodeModules: {},
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        // this defeats the RCTDeviceEventEmitter is not a registered callable module
        inlineRequires: true,
      },
    }),
  },
  watchFolders,
};

react-native start --reset-cache

wballard avatar Aug 22 '20 15:08 wballard

:warning: Missing Reproducible Example
:information_source: It looks like your issue is missing a reproducible example. Please provide a Snack or a repository that demonstrates the issue you are reporting in a minimal, complete, and reproducible manner.

github-actions[bot] avatar Aug 23 '20 22:08 github-actions[bot]

Hi @piiih thank you for the issue. Could you provide a repro that consistently demonstrates this error?

safaiyeh avatar Aug 23 '20 22:08 safaiyeh

I have same issue , in my condition , it cause by i update my node version . solution : delete all node_modules which already downloaded ,and run "yarn install" command for re-install them . then they will be work .

DeepRolling avatar Sep 18 '20 01:09 DeepRolling

I have same issue:

Invariant Violation: Module RCTLog is not a registered callable module (calling logIfNoNativeHook)

It only occur on remote debugging mode, if you disable remote debugging in dev mode, it's still work

luatnd avatar Oct 29 '20 11:10 luatnd

Make sure you have one version of react-native installed. npm ls react-native should help.

michaelgmcd avatar Dec 28 '20 21:12 michaelgmcd

If it helps anyone:

metro.config.js

const path = require("path");
const watchFolders = [
  //Relative path to packages directory because I'm in yarn workpspaces
  path.resolve(__dirname + "/../.."),
];
module.exports = {
  resolver: {
    extraNodeModules: {},
  },
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        // this defeats the RCTDeviceEventEmitter is not a registered callable module
        inlineRequires: true,
      },
    }),
  },
  watchFolders,
};
react-native start --reset-cache

This helped me to fix it!

@wballard, many many many thanks! 🙏🙏🙏

cristiangu avatar Aug 12 '21 17:08 cristiangu

Surely this cannot be the fix right?

arled avatar Sep 17 '22 10:09 arled

I couldn't believe it myself either but changing inlineRequires: false to true solved it. Also suggested by the Upgrade Helper - https://react-native-community.github.io/upgrade-helper/?from=0.62.3&to=0.69.7&package=react-native image

zfoltin avatar Dec 06 '22 22:12 zfoltin

This issue is waiting for author's feedback since 24 days. Please provide the requested feedback or this will be closed in 7 days.

github-actions[bot] avatar Mar 09 '23 00:03 github-actions[bot]

This issue was closed because the author hasn't provided the requested feedback after 7 days.

github-actions[bot] avatar Mar 16 '23 06:03 github-actions[bot]