无法读取未定义的属性'string' React.PropTypes | LayoutPropTypes.js

时间:2017-06-15 17:09:25

标签: javascript reactjs react-native npm

删除并重新安装我的node_modules文件夹后,我遇到了一个我在LayoutPropTypes.js文件中无法理解的问题。

0b000000000000000001 以下变量未定义:node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js

react-native:0.45.1 反应:16.0.0-alpha.12

6 个答案:

答案 0 :(得分:30)

React.PropTypes is now deprecated:

  

注意:从React v15.5开始,不推荐使用React.PropTypes。请使用   支持类型库。

您现在需要单独添加prop-types包。该错误很可能刚刚开始显示,因为您删除了node_modules文件夹,然后重新安装了升级react版本的所有内容。

答案 1 :(得分:11)

您确定使用的是反应16.0.0-alpha.12吗?

检查您的 package.json ,如果您在反应版本之前有^,如果有,可能已经安装了最新的反应版本,目前为16.0.0-alpha.13 ,就像你说的那样打破了(我自己也遇到了问题)。在版本之前使用^,允许它安装较新的次要版本和补丁版本。 You can read more about it here

要使其保持您指定的确切版本,只需删除版本之前的^,以便您的package.json如下所示:

  "dependencies": {
    "react": "16.0.0-alpha.12",
    "react-native": "0.45.1",
  }

请记住在更改后重新安装node_modules。

答案 2 :(得分:9)

Propacts不再提供React。您需要安装它。

首先通过运行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
}

如果您使用的是这样的类型脚本,只需使用界面:

import * as React from 'react'

interface IAwesomeComponentProps {
    name: string
} 

export const AwesomeComponent: React.FC<IAwesomeComponentProps> = props => {
    return(
        <h1>Hello {props.name}</h1>
    )
}

答案 3 :(得分:2)

我有类似的问题,没有解决方案。谈论'prop-types'包的答案毫无意义,问题来自于本地反应源代码。这不是手动修复node_modules文件夹中的本机源的选项。

答案 4 :(得分:0)

现在您可以更新到react-native 0.46.4,只需按照本指南操作: https://facebook.github.io/react-native/docs/upgrading.html

我的package.json看起来像这样:

"react": "16.0.0-alpha.12",
"react-native": "0.46.4",

答案 5 :(得分:0)

而不是像这样定义component的值: propName:React.PropTypes.string

像这样定义 propName:PropTypes.string

最后保存它。