The package react-native does not support web, so to add web support, we install react-native-web and alias react-native to react-native-web in the Webpack bundler (via @expo/webpack-config).
However, this doesn't account for deep imports that reach inside of React Native, e.g. react-native/Libraries/Core/Devtools/getDevServer. Sometimes packages will dangerously reach into the internals of react-native which breaks the react-native-web alias, and effectively calls into native globals like __fbBatchedBridgeConfig which don't exist on web.
Expo wraps this error to make it easier to understand, without Expo you may see a different message:
__fbBatchedBridgeConfig is not set, cannot invoke native modules
You can remove the import altogether, or you can move an internal import inside of a platform specific block:
- import getDevServer from "react-native/Libraries/Core/Devtools/getDevServer";
+ let getDevServer = () => { /* no-op */ }
+ if (Platform.OS !== 'web') {
+ getDevServer = require("react-native/Libraries/Core/Devtools/getDevServer");
+ }