Skip to content

Commit e27d656

Browse files
vonovakfacebook-github-bot
authored andcommitted
improve "not a registered callable module" error message (#28913)
Summary: Motivation: `Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication).` is an error that happens rarely, and most SO answers end up recommending to use `react-native bundle` to work around. I stumbled upon this error the other day and it took me a while to figure out that the error was caused by the fact that my `entryFile` path was pointing to an existing but invalid file. I figured it would be nice to mention this because I believe this will be a frequent cause of the error. ## Changelog <!-- Help reviewers and the release process by writing your own changelog entry. For an example, see: https://github.com/facebook/react-native/wiki/Changelog --> [General] [Changed] - improve "not a registered callable module error message" Pull Request resolved: #28913 Test Plan: tested locally with RNTester, prints ``` [Sun May 17 2020 18:15:55.396] ERROR Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). This can happen when the application entry file path is incorrect. On Android, verify 'getJSMainModuleName()' in 'MainApplication.java' and 'project.ext.react.entryFile' in 'android/app/build.gradle'. On iOS, verify '- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge' in 'AppDelegate.m' and 'ENTRY_FILE' env. variable passed to 'react-native-xcode.sh' (if any) in 'Build Phases' -> 'Bundle React Native code and images'. ``` in metro logs Reviewed By: mdvacca Differential Revision: D23107228 Pulled By: fkgozali fbshipit-source-id: 0712ed7e593ba96b041578bafdbefcd09a3994b7
1 parent 29bcb50 commit e27d656

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

Libraries/BatchedBridge/MessageQueue.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -404,15 +404,12 @@ class MessageQueue {
404404
const moduleMethods = this.getCallableModule(module);
405405
invariant(
406406
!!moduleMethods,
407-
'Module %s is not a registered callable module (calling %s)',
408-
module,
409-
method,
407+
`Module ${module} is not a registered callable module (calling ${method}). A frequent cause of the error is that the application entry file path is incorrect.
408+
This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.`,
410409
);
411410
invariant(
412411
!!moduleMethods[method],
413-
'Method %s does not exist on module %s',
414-
method,
415-
module,
412+
`Method ${method} does not exist on module ${module}`,
416413
);
417414
moduleMethods[method].apply(moduleMethods, args);
418415
Systrace.endEvent();

Libraries/BatchedBridge/__tests__/MessageQueue-test.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ describe('MessageQueue', function() {
108108
const unknownModule = 'UnknownModule',
109109
unknownMethod = 'UnknownMethod';
110110
expect(() => queue.__callFunction(unknownModule, unknownMethod)).toThrow(
111-
`Module ${unknownModule} is not a registered callable module (calling ${unknownMethod})`,
111+
`Module ${unknownModule} is not a registered callable module (calling ${unknownMethod}). A frequent cause of the error is that the application entry file path is incorrect.
112+
This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.`,
112113
);
113114
});
114115

0 commit comments

Comments
 (0)