ReactNative:babelHelpers.typeof不是函数

时间:2016-08-18 10:37:05

标签: javascript react-native ecmascript-6 babeljs

在一个现有的项目中,已经运行了好几个月,而且已经在iOS和Android的AppStore中,我们现在已经开始有了这个错误:

babelHelpers.typeof不是函数

enter image description here

我们所做的就是尝试将基于RN-0.26的应用程序升级到更新版本。但即使在回滚后,错误仍然存​​在。

我们清除了守望者,多次重置包装工人。这里什么都没有帮助。

我们的package.json看起来像这样:

{
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "reset": "rm -rf node_modules/ && npm cache clear && watchman watch-del-all && npm i",
    "start": "node node_modules/react-native/local-cli/cli.js start --reset-cache",
    "testflight": "fastlane beta",
    "android-device": "adb reverse tcp:8081 tcp:8081 && react-native run-android",
    "lint": "jslint **.js",
    "test": "mocha test/",
    "generate-apk": "cd android && ./gradlew assembleRelease && open ./app/build/outputs/apk/",
    "install-apk": "cd android && ./gradlew installRelease",
  },
  "devDependencies": {
    "jshint": "latest",
    "mocha": "latest",
    "eslint": "^2.3.0",
    "eslint-config-standard": "^5.1.0",
    "eslint-config-standard-react": "^2.3.0",
    "eslint-plugin-promise": "^1.1.0",
    "eslint-plugin-react": "^4.1.0",
    "eslint-plugin-react-native": "^1.0.0",
    "eslint-plugin-standard": "^1.3.2"
  },
  "dependencies": {
    "apsl-react-native-button": "^2.5.0",
    "babel-preset-es2015": "^6.9.0",
    "babel-preset-react": "^6.11.1",
    "es6-promisify": "^4.1.0",
    "fetch-stuff": "^1.0.1",
    "iap-receipt-validator": "^1.0.2",
    "immutable": "^3.8.1",
    "js-sha256": "^0.3.0",
    "keymirror": "^0.1.1",
    "lodash.difference": "^4.3.0",
    "lodash.find": "^4.4.0",
    "lodash.partialright": "^4.1.4",
    "lodash.remove": "^4.5.0",
    "lodash.shuffle": "^4.0.0",
    "lodash.uniq": "^4.3.0",
    "moment": "^2.14.1",
    "normalizr": "^2.1.0",
    "react": "15.0.2",
    "react-native": "0.26.2",
    "react-native-animatable": "^0.6.1",
    "react-native-app-intro": "^1.0.2",
    "react-native-billing": "^1.3.0",
    "react-native-code-push": "^1.12.2-beta",
    "react-native-code-push-saga": "^1.0.0",
    "react-native-console-panel": "0.0.9",
    "react-native-debug-stylesheet": "^0.1.1",
    "react-native-drawer": "file:./custom_modules/react-native-drawer",
    "react-native-extra-dimensions-android": "^0.17.0",
    "react-native-fabric": "^0.2.3",
    "react-native-fetch-blob": "^0.4.2",
    "react-native-fs": "^1.4.0",
    "react-native-gifted-spinner": "0.0.4",
    "react-native-google-analytics-bridge": "^2.1.0",
    "react-native-htmlview": "^0.5.0",
    "react-native-i18n": "0.0.8",
    "react-native-image-progress": "^0.5.0",
    "react-native-in-app-utils": "^4.0.0",
    "react-native-keyboard-aware-scroll-view": "^0.1.0",
    "react-native-navbar": "^1.5.0",
    "react-native-router-flux": "^3.30.0",
    "react-native-search-bar": "^2.11.0",
    "react-native-side-menu": "^0.19.0",
    "react-native-simple-store": "^1.0.1",
    "react-native-sound": "^0.8.3",
    "react-native-sqlite-storage": "^2.1.6",
    "react-native-swiper": "^1.4.4",
    "react-native-vector-icons": "^2.0.2",
    "react-redux": "^4.4.5",
    "react-timer-mixin": "^0.13.3",
    "redux": "^3.5.2",
    "redux-form": "^6.0.0-alpha.15",
    "redux-logger": "^2.6.1",
    "redux-saga": "^0.10.4",
    "redux-thunk": "^2.1.0",
    "reselect": "^2.5.1",
    "rn-viewpager": "^1.1.2",
    "rnpm": "^1.7.0",
    "tween-functions": "^1.2.0"
  }
}

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:9)

问题发生的原因是您的项目(通过自定义.babelrc)或您的某个依赖项依赖于不与React Native一起使用的es2015预设。这样做的原因是它包含transform-typeof-symbol,它调用未与React Native捆绑在一起的babelHelpers.typeof

如果您有自定义babelrc - 解决方案很简单,只需删除此预设即可。 然后,重启打包器没有缓存,你应该设置。

注意:它可能是您使用该预设的其中一个依赖项 - 在这种情况下,您无法做任何事情,只能尝试自行删除预设。

答案 1 :(得分:0)

部分解决方案是使用babel-preset-react-native-stage-0

https://www.npmjs.com/package/babel-preset-react-native-stage-0

这里有一个PR可以在react-native代码库中修复它:enter link description here