Uncaught TypeError: Не удается прочитать свойство "bool" неопределенного после обновления.
Я только что обновил свой проект reactjs с 15.4.2
до 16.3.2
, проект компилируется, однако в браузере я получаю эту ошибку:
Uncaught TypeError: Cannot read property 'bool' of undefined
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.exports.__esModule (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
но я мог знать, где строка, вызывающая ошибку. Может быть, мне тоже нужно обновить другие пакеты?
вот что у меня есть сейчас:
"devDependencies": {
"axios": "^0.17",
"babel-preset-react": "^6.24.1",
"bootstrap-sass": "^3.3.7",
"create-react-class": "^15.6.3",
"cross-env": "^5.1",
"laravel-mix": "^1.0",
"lodash": "^4.17.4",
"react": "16.3.2",
"react-dom": "16.3.2"
},
"dependencies": {
"ajv": "^6.4.0",
"animate.css": "^3.1.1",
"bootstrap": "^3.3.7",
"dom-tools": "^0.1.4",
"font-awesome": "^4.7.0",
"history": "^4.7.2",
"jquery": "^3.1.1",
"jquery-slimscroll": "^1.3.6",
"metismenu": "^2.5.0",
"prop-types": "^15.6.0",
"react-bootstrap": "^0.28.3",
"react-bootstrap-sweetalert": "^4.3.1",
"react-infinite-grid": "^0.4.0",
"react-infinite-scroller": "^1.1.4",
"react-metismenu": "^1.4.0-alpha.2",
"react-pace": "^1.0.0",
"react-redux": "^5.0.6",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"react-table": "^6.8.0",
"redux": "^3.7.2",
"redux-logger": "^3.0.6",
"redux-persist": "^4.9.1",
"redux-thunk": "^2.2.0",
"ree-validate": "^1.0.15",
"rndoam": "^0.1.0",
"semantic-ui-react": "^0.76.0"
}
РЕДАКТИРОВАТЬ
Полная ошибка:
Uncaught TypeError: Cannot read property 'bool' of undefined
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.exports.__esModule (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
at Object.<anonymous> (propTypes.js:3)
at __webpack_require__ (propTypes.js:3)
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
exports.__esModule @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
Object.defineProperty.value @ propTypes.js:3
__webpack_require__ @ propTypes.js:3
(anonymous) @ propTypes.js:63
(anonymous) @ propTypes.js:66
Ответы
Ответ 1
но я мог знать, где строка, вызывающая ошибку.
Вам необходимо использовать инструменты, предоставляемые вашим браузером, чтобы узнать, где происходит ошибка. В противном случае легко потратить часы на простые ошибки.
В частности, если вы используете Chrome, откройте вкладку "DevTools" на вкладке "Источники". Нажмите кнопку паузы (синий на изображении) на "Пауза на исключениях":
Теперь, если вы перезагрузите страницу при открытии панели "Источники", вы увидите, где именно код разбивается. Возможно, это зависит от третьей стороны, которая нуждается в обновлении.
Наконец, ваша настройка sourcemap выглядит сломанной. Странно, что почти каждый кадр вызова имеет одинаковый номер строки. Если вы не знаете, как правильно настроить webpack для разработки, я предлагаю использовать официально поддерживаемый инструмент, например Create React App, который настраивает его для вас.
Ответ 2
https://reactjs.org/docs/typechecking-with-proptypes.html
Из приведенной выше ссылки
React.PropTypes has moved into a different package since React v15.5. Please use the prop-types library instead.
Вам нужно import PropTypes from 'prop-types';
вместо того, чтобы полагаться на React.PropTypes