升级到react-native 0.16错误

时间:2015-12-05 23:20:09

标签: react-native

我将我的应用程序从react-native 0.15升级到0.16,但之后我收到错误,我不知道如何解决它。

enter image description here

TypeError:undefined is not an object (evaluating 'GLOBAL.Text={
get defaultProps(){
throw getInvalidGlobalUseError('Text')}}')

在Chrome调试器中:

Uncaught Error: Uncaught TypeError: Cannot set property 'Text' of undefined

由于

OBS:我在Android上运行。

我注意到更改应用名称解决了问题,我今天使用Evently作为应用名称。我试图重新创建我的虚拟机,但没有解决它。

3 个答案:

答案 0 :(得分:10)

在我的情况下,我能够将原因缩小到.babelrc文件中的一个项目:

{
    "presets": ["es2015"]
}

一旦我删除并重新启动了打包程序(确保也使用--reset-cache标志),我就停止了错误。

更新2: 看起来React Native在版本.babelrc中为0.20.0制作了一些changes。因此,如果您使用的是该版本或更新版本,则应按照:https://github.com/facebook/react-native/tree/master/babel-preset上的说明操作,以指定.babelrc设置。

<强>更新: 我将其进一步缩小到transform-es2015-modules-commonjs,React-Native设置了一些选项,特别是{"strict": false, "allowTopLevelThis": true}es2015预设不设置此选项,似乎React-Native .babelrc不会覆盖它。如果你想使用es6模块并将它们转换为commonjs,你需要将以下内容放在.babelrc中:

{
    "plugins": [
        ["transform-es2015-modules-commonjs", {"strict": false, "allowTopLevelThis": true}]
    ]
}

注意,Babel 6,我更新为react-native 0.16.0,默认情况下不再包含任何变换。我最初没有意识到React-Native打包器提供了您可能需要的大多数转换(在他们的文档中列出:https://facebook.github.io/react-native/docs/javascript-environment.html#javascript-syntax-transformers),我认为“es2015”插件会干扰一些变形金刚。

我也尝试使用“babel-preset-react”(http://babeljs.io/docs/plugins/preset-react/),该插件似乎没有造成任何错误。

答案 1 :(得分:0)

我解决了这个问题。我认为这是因为项目文件夹中的权限。我在我的文件夹中运行chown来纠正权限问题,现在一切正常。

由于

答案 2 :(得分:0)

在我的情况下,问题是一个流氓.babelrc两个文件夹(我的根代码文件夹);我已经发起了一个自动生成器来使用babel-6来构建一个新项目......从根代码文件夹中意外地运行了yeoman。显然,babel从我的项目文件夹中向上移动,直到它击中了这个.babelrc,这使得反应原生的babel配置... ...

^这最初是我最初答案的编辑,在我更新的时候删除了