反应路由器错误TypeError:_react.PropTypes未定义

时间:2019-07-31 15:00:05

标签: reactjs react-router react-router-dom

我是Reactjs的新手。我尝试将React Router添加到我的应用程序中,现在出现错误:

  

TypeError:_react.PropTypes未定义   ./node_modules/react-router/lib/PropTypes.js   C:/react/myapplcation/node_modules/react-router/lib/PropTypes.js:8

我已安装

npm install --save react-router

我的index.js代码:

import React from 'react';
import ReactDOM from 'react-dom';
import {Router, browserHistory} from 'react-router';
//import App from './Components/App';
import routes from './routes';

//ReactDOM.render(<App />, document.getElementById('root'));
ReactDOM.render(
    <Router history={browserHistory} routes={routes} />
    , document.getElementById('root'));

添加新的route.js文件

import React from 'react';
import {Route, IndexRoute} from 'react-router';
import App from './Components/App';

export default(
<Route path="/" component={App} />
)

package.json文件:

 {
   "name": "myapplication",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.19.0",
    "cors": "^2.8.5",
    "jquery": "^3.4.1",
    "prop-types": "^15.7.2",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-js-pagination": "^3.0.2",
    "react-router": "^2.8.1",
    "react-scripts": "3.0.1",
    "react-select": "^2.0.0-beta.7",
    "underscore": "^1.9.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

2 个答案:

答案 0 :(得分:1)

编辑:

只需尝试获取react-router的最新版本

运行npm i react-router@latest


我几乎确定您应该使用react-router-dom,但是如果不是这样的话...

运行npm i react-router-dom并更改

import {Router, browserHistory} from 'react-router';

收件人

import {Router, browserHistory} from 'react-router-dom';

如果您想知道为什么会得到错误

  

_react.PropTypes未定义

之所以发生这种情况,是因为在react的更高版本中,PropTypes是导出的软件包,但是随后它们从react中删除并创建了prop-types

可能您使用的是较新版本的react,但较旧的react-router使用import {PropTypes} from 'react'React.PropTypes,但在较新的版本中不存在。

看着package.json,您正在使用"react-router": "^2.8.1",因为它是一个较旧的版本(现在estable在3.x中),所以该版本可能使用了旧版本的react。

正如您在React 16.0.0的changelog中所看到的。

  

15.x中引入的弃用已从核心软件包中删除。 React.createClass现在可以作为create-react-class使用,React.PropTypes作为prop-types,React.DOM作为react-dom-factories,react-addons-test-utils作为react-dom / test -utils和浅色渲染器作为react-test-renderer / shallow。有关迁移代码和自动代码模块的说明,请参见15.5.0和15.6.0博客文章。

答案 1 :(得分:0)

我参考了本教程https://codeburst.io/getting-started-with-react-router-5c978f70df91并找到了解决方案。感谢大家。