新的反应原生应用程序有'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

Interesting Posts