I've just started learning React and got stuck at this error.
Uncaught TypeError: Cannot read property 'pathname' of undefined at new Router
Here is my code:
var React = require('react'); var ReactDOM = require('react-dom'); var { Route, Router, IndexRoute } = require('react-router'); var hashHistory = require('react-router-redux') var Main = require('./components/Main'); ReactDOM.render( <Router history={hashHistory}> <Route path="/" component={Main}> </Route> </Router>, document.getElementById('app') );
The tutorial I was following uses React-Router 2.0.0, but on my desktop I'm using 4.1.1. I tried searching for changes but was unsuccessful in finding a solution that worked.
"dependencies": { "express": "^4.15.2", "react": "^15.5.4", "react-dom": "^15.5.4", "react-router": "^4.1.1", "react-router-dom": "^4.1.1", "react-router-redux": "^4.0.8"
The error "Cannot read property 'pathname' of undefined" occurs when we don't set the to prop on a Link component in React router. To solve the error, set the to prop on the Link to the specific path, e.g. <Link to="/">Home</Link>. Here is a minimal example of using the Link component in React router.
See the accepted answer in the following: "Cannot read properties of undefined (reading 'pathname')" when testing pages in the v6 React Router Just make sure that you've added to props to <Link> otherwise you would also get the same error.
The API in React Router v6 has changed from that of v5. See the accepted answer in the following: "Cannot read properties of undefined (reading 'pathname')" when testing pages in the v6 React Router
Failed prop type: The prop location is marked as required in ConnectedRouter, but its value is undefined. Failed prop type: The prop action is marked as required in ConnectedRouter, but its value is undefined.
I got the above error message and it was extremely cryptic. I tried the other solutions mentioned and it didn't work.
Turns out I accidentally forgot to include the to
prop in one of the <Link />
components.
Wish the error message was better. A simple required prop "to" not found
or something like that would have been helpful. Hopefully this saves someone else who has encountered the same problem some time.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With