React-router browserHistory抛出错误

时间:2016-03-06 04:57:43

标签: reactjs react-router

使用react-router 2.0.0并尝试配置基础知识。当然我想要浏览器历史记录,因为我不想要URL中的所有垃圾,所以我阅读了文档,这看起来非常简单。当我使用hashHistory时,这很有效,但切换到浏览器历史并不是那么多。

我的应用:

var React = require('react');
var ReactDOM = require('react-dom');
var Router = require('react-router').Router;
var Route = require('react-router').Route;
var browserHistory  = require('react-router').browserHistory;
var App = require('./components/App.react');
var About = require('./components/About');

ReactDOM.render(
    <Router history={browserHistory } >
        <Route path="/" component={App}>
            <Route path="about" component={About} />
        </Route>
    </Router>, 
    document.getElementById('app')
);

这是错误:

  

Uncaught SecurityError:无法在'History'上执行'replaceState':   带URL的历史状态对象   '文件:/// E:/My%20Documents/GitHub/foo-bar/src/main/webapp/index.htm'   无法在原点为“null”的文档中创建。

从阅读错误听起来像历史API抱怨,因为“起源”是空的,但这一切都在框架中,所以我不知道该怎么做。

我调试到了createBrowserHistory.js,发现这引发了错误:

  function getCurrentLocation(historyState) {
    historyState = historyState || window.history.state || {};

    var path = _DOMUtils.getWindowPath();
    var _historyState = historyState;
    var key = _historyState.key;

    var state = undefined;
    if (key) {
      state = _DOMStateStorage.readState(key);
    } else {
      state = null;
      key = history.createKey();

      //***********THIS LINE THROWS THE ERROR**************
      if (isSupported) window.history.replaceState(_extends({}, historyState, { key: key }), null, path);
    }

    var location = _PathUtils.parsePath(path);

    return history.createLocation(_extends({}, location, { state: state }), undefined, key);
  }

似乎问题是document.origin为null因为我从我本地计算机上的文件加载index.htm而不是远程服务器。我不想每次只是为了测试而打包和部署我的代码。

0 个答案:

没有答案