You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native iOS端objectWithoutProperties类型错误排查求助

React Native iOS端objectWithoutProperties导入错误排查

错误信息

ERROR  TypeError: _$$_REQUIRE(_dependencyMap[3], "(...)helpers/objectWithoutProperties") is not a function (it is Object)

This error is located at:
    in MaskedView (created by HeaderBackButton)
    in RCTView (created by View)
    in View (created by Pressable)
    in Pressable (created by Pressable)
    in Unknown (created by PlatformPressable)
    in PlatformPressable (created by HeaderButton)
    in HeaderButton (created by HeaderBackButton)
    in HeaderBackButton (created by Header)
    in RCTView (created by View)
    ...
    in BttSdkExample(RootComponent), js engine: hermes

已尝试操作

  • 重置Metro Bundler缓存:
    npx react-native start --reset-cache
  • 重新安装依赖:
    • rm -rf node_modules package-lock.json yarn.lock
    • npm install
  • 重新安装Pods:
    cd ios && pod install --repo-update && cd ..
  • 安装最新Babel runtime:
    npm install @babel/runtime@latest

项目配置与依赖

环境

  • React Native Version: 0.72.9
  • Navigation Library: @react-navigation/native@7.0.14
  • 平台:iOS / Android / 双平台

依赖清单

"dependencies": {
  "@react-navigation/bottom-tabs": "^7.2.0",
  "@react-navigation/drawer": "^7.1.1",
  "@react-navigation/native": "^7.0.14",
  "@react-navigation/stack": "^7.1.1",
  "axios": "^1.7.9",
  "react": "18.2.0",
  "react-native": "^0.72.9",
  "react-native-gesture-handler": "^2.9.0",
  "react-native-safe-area-context": "^4.5.0",
  "react-native-screens": "^4.1.0",
  "react-native-vector-icons": "^10.2.0",
  "rn-fetch-blob": "^0.12.0"
},
"devDependencies": {
  "@babel/core": "^7.22.15",
  "@babel/preset-env": "^7.22.15",
  "@babel/runtime": "^7.22.15",
  "@react-native/metro-config": "^0.72.11",
  "babel-plugin-module-resolver": "^5.0.0",
  "metro-react-native-babel-preset": "^0.76.9",
  "watchman": "^1.0.0"
}

问题咨询

  1. 为何objectWithoutProperties会被作为对象而非函数导入?
  2. Hermes或Babel是否存在已知问题会触发该错误?
  3. 这是否是特定库(如react-navigation)的问题,该如何调试?
  4. 该问题是否由react-native-screens依赖引发?

问题解答

1. 为何objectWithoutProperties会被作为对象而非函数导入?

本质是模块导入方式不匹配或依赖版本冲突:

  • objectWithoutProperties是Babel提供的工具函数,默认从@babel/runtime/helpers/objectWithoutProperties以默认导出方式导入。如果代码或依赖库错误使用命名导入(比如import { objectWithoutProperties } from '@babel/runtime/helpers/objectWithoutProperties'),就会把整个模块对象当成导入结果,调用时就会出现“不是函数”的错误。
  • 另外,@babel/runtime版本和依赖它的库(如react-navigation)要求的版本不一致,导致模块结构变化,也会触发这个问题。

2. Hermes或Babel是否存在已知问题会触发该错误?

  • Babel:如果metro-react-native-babel-preset配置错误,或者自定义插件(如babel-plugin-module-resolver)干扰了模块解析路径,可能导致@babel/runtime的helper函数导入异常。同时@babel/runtime和@babel/core版本不匹配也会引发这类问题。
  • Hermes:Hermes本身不会直接导致该错误,但启用字节码编译时,旧缓存的字节码可能保留错误的模块导入信息——不过你已经执行了--reset-cache,这个可能性很低。

3. 这是否是特定库(如react-navigation)的问题,该如何调试?

大概率是react-navigation版本与React Native不兼容导致的:

  • @react-navigation/native@7.x的官方最低要求是React Native 0.73.x,而你使用的是0.72.9,版本不匹配会导致导航库内部依赖的Babel helper调用出错。
  • 调试方法:
    • 临时移除所有react-navigation依赖,创建最小化测试项目,若错误消失,说明问题出在导航库。
    • 查看node_modules/@react-navigation/stack或@react-navigation/native内部代码,搜索objectWithoutProperties的导入方式,确认是否存在错误写法。
    • 降级react-navigation到适配React Native 0.72.x的6.x系列版本,测试是否解决问题。

4. 该问题是否由react-native-screens依赖引发?

直接引发的可能性较低,但不排除间接影响:

  • react-native-screens@4.1.0是适配React Native 0.72.x的版本,本身不会直接调用objectWithoutProperties。
  • 但如果@react-navigation/native@7.x要求的react-native-screens版本与你安装的4.1.0不兼容,可能导致导航库内部组件渲染逻辑出错,间接触发这个导入错误。可以尝试升级react-native-screens到导航库要求的版本(查看其package.json的peerDependencies)后再测试。

内容的提问来源于stack exchange,提问作者sandesh pawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:28:25