我升级我的应用程序从反应原生0.15至0.16,但之后我发现了一个错误,我不知道如何解决它.
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作为应用程序名称.我试图重新创建我的虚拟机,但没有解决它.
在我的情况下,我能够将原因缩小到我的.babelrc
文件中的一个项目:
{ "presets": ["es2015"] }
一旦我删除它并重新启动打包器(确保也使用该--reset-cache
标志),我就停止了错误.
更新2:
看起来React Native正在对其版本进行一些更改.因此,如果您使用的是该版本或更新版本,则应遵循以下网址中的说明:https://github.com/facebook/react-native/tree/master/babel-preset以指定您的设置..babelrc
0.20.0
.babelrc
更新:我已经进一步缩小了这一点transform-es2015-modules-commonjs
,React-Native特别设置了一些选项{"strict": false, "allowTopLevelThis": true}
.该es2015
预设不设置这个选项,似乎阵营本地.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/),该插件似乎没有导致任何错误.