最近一直被这个坑,坑疯了。
现在react-native升级到0.50 ,但是 0.44之后,Navigator
被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components
的单独模块中。如果你需要继续使用Navigator
,则需要先yarn add react-native-deprecated-custom-components
安装,然后从这个模块中import,即import { Navigator } from 'react-native-deprecated-custom-components'
.
编译项目之后会出现下面的错误:
我们找到对应错误的地方:
下面贴出代码而通过上面这个包里的源码我们可以发现,它使用了 React.PropTypes,问题正是出在这里。
其实从 React 16.0.0 开始,PropTypes 就已经不再由 React 提供了,而 fb 专门提供了 prop-types 模块,需要通
import PropTypes from 'prop-types'
来使用 PropTypes。0.48 版本的 RN 使用的是
16.0.0-alpha.12
版本的 React,alpha 版本还没有移除 PropTypes,所以之前项目不会有任何问题。而到了 0.49版本,自动将 React 升级到了16.0.0-beta.5
,这个版本已经移除了 React.PropTypes,所以再编译就会报错了,因为找不到 PropTypes 了。而此时我发现
react-native-deprecated-custom-components
这个包还没有更新,为了解决这个问题,我在package.json
文件里将 React 的版本还原到了16.0.0-alpha.12
,然后执行npm install
进行重装。完成后编译运行,项目成功启动。
App.js
Main.js
Second.js