使用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而不是远程服务器。我不想每次只是为了测试而打包和部署我的代码。