Ошибка типа: невозможно прочитать свойство 'any' из неопределенного после обновления - PullRequest
1 голос
/ 10 апреля 2019

Я обновил несколько npm пакетов в своем приложении и обнаружил кучу ошибок, которые я уже благополучно решил, кроме одного!

TypeError: Cannot read property 'any' of undefined
at Object.<anonymous> (/home/cpt/Desktop/prod/local/app/components/Base/react-quick-return.js:11:24)
at loader (/home/cpt/Desktop/prod/local/node_modules/babel-register/lib/node.js:144:5)

В следующем коде:

/* eslint-disable */
import React, {PropTypes} from 'react';
import detectPassiveEvents from 'detect-passive-events';
import {getScrollTop, getSupportedCSSProperty} from 'utils/dom';
import cx from 'classnames';

const EVENTS = ['scroll', 'resize', 'load', 'pageshow'];

class QuickReturn extends React.Component {
    static propTypes = {
        component: PropTypes.any.isRequired, //HERE IS
        className: PropTypes.string
    };

Я изменил версию react с 15.3.1 на 16.8.4

Однако я также обновил следующие пакеты:

    "babel-core": "6.26.3",
    "react": "16.8.4",
    "react-addons-create-fragment": "15.6.2",
    "react-addons-css-transition-group": "15.6.2",
    "react-addons-pure-render-mixin": "15.6.2",
    "react-dom": "16.8.4",
    "react-maskedinput": "4.0.1",
    "react-redux": "5.1.0",
    "react-router": "3.2.0",
    "redux": "4.0.0",
    "react-addons-test-utils": "15.6.2",

Насколько я вижу, проблема в модуле babel-register, но не в моем package.json

Скажите, пожалуйста, в чем может быть дело? Я добрался до 5-й страницы Google и решил написать здесь.

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

PropTypes не живи внутри, реагируй должным образом. Теперь это import PropTypes from 'prop-types'. https://reactjs.org/docs/typechecking-with-proptypes.html

1 голос
/ 10 апреля 2019

Сообщение

Cannot read property 'any' of undefined

относится, как вы сами нашли, к этой строке:

component: PropTypes.any.isRequired, //HERE IS

Это означает, что PropTypes равно undefined, а этов свою очередь, потому что PropTypes не был импортирован правильно.Вы пытаетесь сделать это с помощью

import React, {PropTypes} from 'react';

, но уже довольно давно PropTypes уже не является частью самого React, а представляет собой отдельный пакет, который вам нужно установить и импортировать самостоятельно.См. prop-types на npm для получения более подробной информации.

По сути, вам нужно добавить следующую строку (и удалить PropTypes из существующего react импорта):

import PropTypes from 'prop-types';
...