使用 react router 和 express 在 heroku 上刷新时找不到路由
Route not found on refresh using react router and express on heroku
在本地提供我的应用程序时,刷新时一切正常加载和工作。当我部署到 Heroku 时,点击不同的链接时一切正常。
我一直 运行 关注的问题是我到达路线的时间。 IE:/aboutus 并刷新我得到 "not found"。当我导航到那里时,一切都很好。有什么想法吗?
我也在用react router redux
package.json
....
"express": "^4.14.1",
"react-redux": "^5.0.3",
"react-router": "^3.0.2",
"react-router-redux": "^4.0.8",
server.js
app.use(express.static(path.join(__dirname, '/../dist')));
app.use('/data', express.static(__dirname + '/data'));
app.use(express.static(__dirname))
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
});
Index.js
...
const router = (
<Provider store={store}>
<Router history={history}>
<Route path="/" component={App}>
<IndexRoute component={Home} />
<Route path="/aboutus" component={About} />
<Route path="/list" component={List} />
</Route>
</Router>
</Provider>
)
render(router, document.getElementById('main'));
如果其他人遇到此问题,我最终通过将我的 Express 配置调整为以下内容来解决此问题:
//res.sendFile(path.join(__dirname, 'index.html'));
res.sendFile(path.resolve(__dirname + '/../dist/index.html'));
在本地提供我的应用程序时,刷新时一切正常加载和工作。当我部署到 Heroku 时,点击不同的链接时一切正常。
我一直 运行 关注的问题是我到达路线的时间。 IE:/aboutus 并刷新我得到 "not found"。当我导航到那里时,一切都很好。有什么想法吗?
我也在用react router redux
package.json
....
"express": "^4.14.1",
"react-redux": "^5.0.3",
"react-router": "^3.0.2",
"react-router-redux": "^4.0.8",
server.js
app.use(express.static(path.join(__dirname, '/../dist')));
app.use('/data', express.static(__dirname + '/data'));
app.use(express.static(__dirname))
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
});
Index.js
...
const router = (
<Provider store={store}>
<Router history={history}>
<Route path="/" component={App}>
<IndexRoute component={Home} />
<Route path="/aboutus" component={About} />
<Route path="/list" component={List} />
</Route>
</Router>
</Provider>
)
render(router, document.getElementById('main'));
如果其他人遇到此问题,我最终通过将我的 Express 配置调整为以下内容来解决此问题:
//res.sendFile(path.join(__dirname, 'index.html'));
res.sendFile(path.resolve(__dirname + '/../dist/index.html'));