diff --git a/Libraries/EventEmitter/NativeEventEmitter.js b/Libraries/EventEmitter/NativeEventEmitter.js index 908d1e1547b..b3f72480717 100644 --- a/Libraries/EventEmitter/NativeEventEmitter.js +++ b/Libraries/EventEmitter/NativeEventEmitter.js @@ -46,7 +46,26 @@ export default class NativeEventEmitter '`new NativeEventEmitter()` requires a non-null argument.', ); } - this._nativeModule = nativeModule; + + const hasAddListener = + !!nativeModule && typeof nativeModule.addListener === 'function'; + const hasRemoveListeners = + !!nativeModule && typeof nativeModule.removeListeners === 'function'; + + if (nativeModule && hasAddListener && hasRemoveListeners) { + this._nativeModule = nativeModule; + } else { + if (!hasAddListener) { + console.warn( + '`new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.', + ); + } + if (!hasRemoveListeners) { + console.warn( + '`new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.', + ); + } + } } addListener>(