新的反应原生应用程序有'TypeError:babelHelpers.typeof不是一个函数'
使用最新版本的react-native创build的新项目在运行(/debugging)时会抛出javascript错误。 在模拟器上testing过。
[fatal][tid:main] TypeError: babelHelpers.typeof is not a function. (In 'babelHelpers.typeof(target)', 'babelHelpers.typeof' is undefined)
今天安装了react-native客户端并使用创build的应用程序
react-native init AwesomeProject
应用版本:
react-native-cli: 0.1.10 react-native: 0.20.0 node version: v5.6.0
这里有一个解释这个问题的评论:
https://github.com/facebook/react-native/issues/4844#issuecomment-204035720
总结:
Babel预设'stage-0'
到'stage-3'
包含'async-to-generator'
,这对于反应原生本身并不是不必要的。
解决scheme是使用非官方的babel预设'react-native-stage-0'
例:
npm install babel-preset-react-native-stage-0 --save-dev
.babelrc
{ "presets": ["react-native-stage-0"] }
或与装饰者的支持
{ "presets": ["react-native-stage-0/decorator-support"] }
清空caching并重新启动
watchman watch-del-all ./node_modules/react-native/packager/packager.sh start --reset-cache
解决了在项目的根文件夹中添加babel stage-1并将原生预设的内容添加到.babelrc。
{ "presets": ["stage-1", "react-native"], }
更多细节在这里: https : //github.com/facebook/react-native/issues/5747
为了解决这个问题,我重命名了父目录中的.babelrc文件,然后运行./node_modules/react-native/packager/packager.sh start --reset-cache
一个问题是,如果在你的应用程序的父目录中有一个.babelrc
,打包程序将会读取它,并且会导致这个确切的错误。 一个方法是在你的项目中添加一个.babelrc
文件:
{ "presets": ["react-native"] }
我更新了新发布的react-native@0.21
,问题就消失了。 我不确定这是否意味着根本问题已经得到解决,因为我已经看到与其他“修复”间歇性的成功。
请仔细检查您的导入path/文件名称,因为它们区分大小写
这通常是由于第三方的npm依赖关系,在它的package.json中指定了.babelrc或者babel es2015预设。
有一个修复的地方: https : //github.com/facebook/react-native/pull/11093