Не удается прочитать свойство 'string' из undefined | React.PropTypes | LayoutPropTypes.js
После удаления и переустановки моей папки node_modules у меня возникла проблема, которую я не понимаю в файле LayoutPropTypes.js.
В node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js
Следующая переменная undefined: var ReactPropTypes = require('React').PropTypes;
реакция-родная: 0.45.1
реагировать: 16.0.0-alpha.12
Ответы
Ответ 1
React.PropTypes теперь устарели:
Примечание. React.PropTypes устарел с версии React v15.5. Пожалуйста, используйте prop-types.
Вам нужно добавить пакет prop-types отдельно. Вероятно, ошибка появилась только потому, что вы удалили папку node_modules
, а затем переустановили все, что обновило версию react
.
Ответ 2
Вы абсолютно уверены, что используете реакцию 16.0.0-alpha.12
?
Проверьте package.json, если у вас есть ^
перед реакционной версией, если у вас есть, вероятно, установлена последняя версия ответа, которая в настоящее время 16.0.0-alpha.13
, в которой она ломается, как вы говорите (только сама проблема). Имея ^
перед версией, он позволяет устанавливать более новые версии и исправления. Подробнее об этом читайте здесь.
Чтобы сохранить его в указанной вами точной версии, просто удалите ^
перед версией, чтобы ваш package.json выглядел следующим образом:
"dependencies": {
"react": "16.0.0-alpha.12",
"react-native": "0.45.1",
}
Не забудьте повторно установить node_modules после изменений.
Ответ 3
React больше не поставляется с PropTypes. Вам нужно будет установить его.
Сначала установите пакет prop-types
, запустив npm i prop-types --save
.
Затем используйте пакет prop-types
в своем компоненте следующим образом:
import React from 'react'
import PropTypes from 'prop-types'
export const AwesomeComponent = props => {
return(
<h1>Hello {props.name}</h1>
)
}
AwesomeComponent.propTypes = {
name: PropTypes.string.isRequired
}
Или просто используйте интерфейс, если вы используете Typescript следующим образом:
import * as React from 'react'
interface IAwesomeComponentProps {
name: string
}
export const AwesomeComponent: React.FC<IAwesomeComponentProps> = props => {
return(
<h1>Hello {props.name}</h1>
)
}
Ответ 4
У меня есть аналогичная проблема, нет решения. Ответы, говорящие о пакете "prop-types", бессмысленны, проблема исходит из исходного кода. Это не возможность вручную исправлять собственный источник в папке node_modules.
Ответ 5
Теперь вы можете обновить для реагирования 0.46.4, просто следуйте этому руководству:
https://facebook.github.io/react-native/docs/upgrading.html
my package.json выглядит так:
"react": "16.0.0-alpha.12",
"react-native": "0.46.4",
Ответ 6
вместо определения значения для компонента следующим образом:
propName: React.PropTypes.string
Определите, как это
propName: PropTypes.string
и, наконец, сохранить его.