【问题标题】:Route not found on refresh using react router and express on heroku使用反应路由器刷新时找不到路由并在heroku上表达
【发布时间】:2017-08-25 15:46:05
【问题描述】:

在本地为我的应用程序提供服务时,一切都在加载并在刷新时正常工作。当我部署到 Heroku 时,点击不同的链接时一切正常。

我一直遇到的问题是当我到达路线时。 IE: /aboutus 并刷新我得到一个“未找到”。当我在那里导航时,一切都很好。有什么想法吗?

我也在使用 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'));
});

索引.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'));

【问题讨论】:

  • 你的node应用是直接调用的吗?还是先有 apache / nginx ?您在 env(本地和 Heroku)中都有哪个节点版本?

标签: reactjs express heroku react-router react-redux


【解决方案1】:

如果其他人遇到此问题,我最终通过将我的 Express 配置调整为以下来解决此问题:

//res.sendFile(path.join(__dirname, 'index.html'));
res.sendFile(path.resolve(__dirname + '/../dist/index.html'));

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2016-06-05
    相关资源
    最近更新 更多