升级ReactJS至16.3.2后出现Uncaught TypeError: Cannot read property 'bool' of undefined错误求助
解决React 16.3.2升级后"Cannot read property 'bool' of undefined"错误
嘿,这个问题我太熟了——React 16.x版本开始把PropTypes从核心库中彻底剥离出来了,这就是你报错的根源!在React 15.x后期其实已经有警告提示,但到16.x就完全移除了内置的PropTypes,所以你在代码里直接引用React.PropTypes就会找不到这个属性,抛出bool未定义的错误。
下面是具体的解决步骤:
第一步:安装独立的
prop-types包
在项目根目录运行以下命令(根据你的包管理器选择):# 使用npm npm install prop-types --save # 使用yarn yarn add prop-types第二步:修改代码中PropTypes的导入方式
找到项目中所有使用PropTypes的文件,把原来的导入语句:import React, { PropTypes } from 'react'; // 或者旧的CommonJS写法 var React = require('react'); var PropTypes = React.PropTypes;替换成:
import PropTypes from 'prop-types'; // 或者CommonJS写法 var PropTypes = require('prop-types');第三步:更新PropTypes的使用代码
把原来依赖React.PropTypes的代码,比如:MyComponent.propTypes = { isActive: React.PropTypes.bool.isRequired, userName: React.PropTypes.string };修改为直接使用
PropTypes:MyComponent.propTypes = { isActive: PropTypes.bool.isRequired, userName: PropTypes.string };额外检查:第三方依赖的兼容性
如果修改完自己的代码还是报错,那可能是某个第三方依赖库还在使用旧的React.PropTypes写法。这时候你可以:- 查看该依赖的最新版本,升级到支持React 16的版本
- 若无法升级,可以考虑使用
react-app-rewired(如果是Create React App项目)或者自定义Webpack配置,添加别名让React.PropTypes指向prop-types包,但这只是临时解决方案,优先推荐升级依赖。
内容的提问来源于stack exchange,提问作者simo
相关产品推荐
相关产品推荐

