【问题标题】:react-router location did not match any routesreact-router 位置与任何路由都不匹配
【发布时间】:2016-04-22 14:03:32
【问题描述】:

我被 react-router 路由卡住了。我收到错误:

Warning: [react-router] Location "/FluxApp/" did not match any routes

这是我的 app.js

var React = require('react');
var ReactDOM = require('react-dom');
var Router = require('react-router').Router;
var Route = require('react-router').Route;
var IndexRoute = require('react-router').IndexRoute;
var browserHistory = require('react-router').browserHistory;

var App = require('./views/App');
var Home = require('./views/Home');


var Routes = (<Router history={browserHistory}>
               <Route path="/" component={App}>
                 <IndexRoute component={Home} />
               </Route>
              </Router>);

ReactDOM.render(Routes, document.getElementById('content'));

我的 App.js 如下:

var React = require('react');
var RouteHandler = require('react-router').RouteHandler;

var App = React.createClass({
  render: function() {
     return (
        <RouteHandler />
     );
  }
});

module.exports = App;

我的 Home.js 如下:

var React = require('react');

var Home = React.createClass({

  render: function() {
    return (
      <div>
        Home
      </div>
    );
  }

});

module.exports = Home;

这是我的项目的层次结构:

/FluxApp
   |...
   +/js
   .  |
   .  +/actions
   .  +/constants
   .  +/dispatcher
   .  +/stores
   .  +/views
   .  .     |
   .  .     App.js
   .  .     Home.js
   .  app.js
   .
   index.html

如你所料,我使用 browserify 构建 app.js 并创建 bundle.js 并且我在脚本中使用该 bundle.js index.html

中的标记

这是我在项目中使用的所有版本。

"dependencies": {
   "classnames": "^2.2.3",
   "flux": "^2.1.1",
   "keymirror": "^0.1.1",
   "object-assign": "^1.0.0",
   "react": "^0.14.6",
   "react-dom": "^0.14.6",
   "react-router": "^2.0.0-rc5"
},
"devDependencies": {
   "browserify": "^6.2.0",
   "envify": "^3.0.0",
   "jest-cli": "^0.4.3",
   "reactify": "^0.15.2",
   "uglify-js": "~2.4.15",
   "watchify": "^2.1.1"
},

所以,当我尝试转到“http://localhost:8080/FluxApp/”时,我总是收到相同的错误:“警告:[react-router] 位置“/FluxApp/”与任何路由都不匹配”

我该如何解决这个问题? 谢谢。

【问题讨论】:

    标签: javascript reactjs react-router


    【解决方案1】:

    React Router v4 与 webpack 实现如下

    import { BrowserRouter as Router, Route } from 'react-router-dom';
    
    ReactDOM.render(
      <Router>
        <div>
          <Route exact path="/" render={() => <h1>main page</h1>} />
          <Route path="/about" render={() => <h1>about page</h1>} />
          <Route path="/contact" render={() => <h1>contact page</h1>} />
        </div>
      </Router>,
      document.getElementById('root'));
      
      //webpack  build  script change add --history-api-fallback in package.json file
      "scripts": {
        "start": "webpack-dev-server --history-api-fallback"
        }

    现在在终端上运行以下命令:npm start

    【讨论】:

      【解决方案2】:

      您的路线实际上并未为/FluxApp 指定路线。

      你需要类似的东西:

      app.js

      var Routes = (<Router history={browserHistory}>
                     <Route path="/FluxApp/" component={App}>
                      <IndexRoute component={Home} />
                     </Route>
                    </Router>);
      

      App.js

      var App = React.createClass({
        render: function() {
          return this.props.children;
        }
      });
      

      【讨论】:

      • 如果我们更改根文件夹名称会发生​​什么?我们也必须改变路径。我们可以预防吗?
      猜你喜欢
      • 2017-02-11
      • 2016-10-09
      • 1970-01-01
      • 2016-12-06
      • 2016-12-03
      • 1970-01-01
      • 2016-09-02
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多