无法读取未定义的属性“字符串” | React.PropTypes | LayoutPropTypes.js

IT技术 javascript reactjs react-native npm
2021-03-27 18:55:52

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

node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js 以下变量未定义:var ReactPropTypes = require('React').PropTypes;

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

6个回答

React.PropTypes 现在已弃用:

注意:React.PropTypes 从 React v15.5 开始被弃用。请改用 prop-types 库。

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

@NicolasMeienberger yarn add react@16.0.0-alpha.12
2021-05-24 18:55:52
通过重新启动计算机修复:(
2021-05-27 18:55:52
我已经在我的项目中添加了 prop-types,但我仍然有这个问题。我试图重新安装节点,它没有用。现在,我什至无法运行 react native 的演示。我想知道如何降级 react 的版本?
2021-06-01 18:55:52

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>
    )
}

你绝对确定你正在使用 react16.0.0-alpha.12吗?

检查你的package.json如果你有^之前的 react 版本,如果你有,它可能已经安装了最新的 react 版本,目前是16.0.0-alpha.13,它会像你说的那样中断(只是我自己有问题)。拥有^之前的版本,允许它安装更新的次要版本和补丁版本。您可以在此处阅读更多相关信息

要将其保持在您指定的确切版本,只需删除^版本之前的 ,以便您的 package.json 看起来像这样:

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

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

我在 alpha.13 中有同样的问题,当回到 alpha.12 时就可以了!
2021-05-22 18:55:52

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

我不完全明白,如果我创建一个新的应用程序,react-native init那么该应用程序运行良好。
2021-06-14 18:55:52

现在您可以更新到 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",