删除并重新安装我的 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
删除并重新安装我的 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
注意:React.PropTypes 从 React v15.5 开始被弃用。请改用 prop-types 库。
您现在需要单独添加prop-types包。该错误很可能刚刚开始出现,因为您删除了node_modules
文件夹,然后重新安装了升级react
版本的所有内容。
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。
我有类似的问题,没有解决方案。谈论“prop-types”包的答案毫无意义,问题来自于 react-native 源代码。这不是在 node_modules 文件夹中手动修复 react native 源的选项。
现在您可以更新到 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",