求助:Dispatcher.useSyncExternalStore不是函数错误排查
问题描述
我不知道该如何排查这个错误。我在尝试安装react-native-imaged-card-view包并强制更新部分依赖后出现了这个问题,我觉得自己搞坏了一些东西,求帮忙。
报错信息
TypeError: dispatcher.useSyncExternalStore 不是一个函数。(在'dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)'中,'dispatcher.useSyncExternalStore'未定义) 此错误位置: in ExpoStatusBar (由LandingPage创建) in RCTView (由View创建) in View (由LandingPage创建) in LandingPage (由SceneView创建) in StaticContainer in EnsureSingleNavigator (由SceneView创建) in SceneView (由SceneView创建) in RCTView (由View创建) in View (由DebugContainer创建) in DebugContainer (由MaybeNestedStack创建) in MaybeNestedStack (由SceneView创建) in RNSScreen (由AnimatedComponent创建) in AnimatedComponent in AnimatedComponentWrapper (由Screen创建) in MaybeFreeze (由Screen创建) in Screen (由SceneView创建) in SceneView (由NativeStackViewInner创建) in RNSScreenStack (由ScreenStack创建) in ScreenStack (由NativeStackViewInner创建) in NativeStackViewInner (由NativeStackView创建) in RNCSafeAreaProvider (由SafeAreaProvider创建) in SafeAreaProvider (由SafeAreaInsetsContext创建) in SafeAreaProviderCompat (由NativeStackView创建) in NativeStackView (由NativeStackNavigator创建) in Unknown (由NativeStackNavigator创建) in NativeStackNavigator (由AuthStack创建) in AuthStack (由Routes创建) in EnsureSingleNavigator in BaseNavigationContainer in ThemeProvider in NavigationContainerInner (由Routes创建) in Routes (由Providers创建) in AuthProvider (由Providers创建) in Providers (由App创建) in App (由ExpoRoot创建) in ExpoRoot in RCTView (由View创建) in View (由AppContainer创建) in DevAppContainer (由AppContainer创建) in RCTView (由View创建) in View (由AppContainer创建) in AppContainer at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException at node_modules/react-native/Libraries/Core/ReactFiberErrorDialog.js:43:2 in showErrorDialog at navigation/AuthProvider.js:32:13 in stateChanged at navigation/AuthProvider.js:31:25 in stateChanged at node_modules/@firebase/util/dist/index.esm2017.js:1150:0 in <global> at node_modules/@firebase/util/dist/index.esm2017.js:1312:13 in Sha1#compress_
解决方案
核心原因:这个错误是因为当前React版本不支持
useSyncExternalStoreAPI——该API是React 18新增的,若你用的是React 17及以下版本,就会触发这个报错。大概率是强制更新依赖时,把某个依赖包升级到了仅支持React 18的版本。具体修复步骤:
- 检查版本匹配性:
运行npm list react react-native或yarn list react react-native,确认React版本是否低于18。 - 回滚问题依赖:
- 先卸载
react-native-imaged-card-view:npm uninstall react-native-imaged-card-view或yarn remove react-native-imaged-card-view,验证错误是否消失。 - 查看
package.json或依赖更新记录,找出依赖React 18的包,回滚到适配当前React版本的历史版本。比如用npm view [包名] versions查看可用版本,再执行npm install [包名]@x.x.x安装指定版本。
- 先卸载
- 清理缓存重装依赖:
- 执行
npm cache clean --force或yarn cache clean清理缓存 - 删除
node_modules文件夹以及package-lock.json/yarn.lock文件 - 重新执行
npm install或yarn install
- 执行
- 升级React到18(可选):
仅当React Native版本≥0.69时,才支持React 18。确认RN版本达标后,按照官方指引升级React和React Native版本。
- 检查版本匹配性:
内容的提问来源于stack exchange,提问作者davidocodes
相关产品推荐
相关产品推荐

