2016-06-28 28 views
3

我無法弄清楚爲什麼在從哈希位置更改爲現在使用的瀏覽器位置後,我可以點擊下面的鏈接導航到(呈現採訪)採訪,但現在出於某種原因,一旦我在採訪中(我被重定向到呈現的採訪組件),如果我刷新瀏覽器並嘗試再次點擊interviews/companies/:companyId,那麼當我在同一頁面上時,它會彈出我的頁面沒有在我的express.js實現中找到。React-Router從哈希位置更改爲瀏覽器位置後破損

如此反覆,總結這:圍繞第一次,當我從我的主着陸頁就是那個<Link> resides..when我第一次加載網站,點擊該鏈接時,我點擊......它能夠訪問面試/公司/:companyId並呈現面試組件。一切都很好,直到你嘗試刷新之後,它纔會爆炸。不知道爲什麼

server.js

'use strict'; 

var express = require('express'), 
    app = module.exports = express(), 
    port = process.env.PORT || 3000, 
    path = require('path'); 

app.use(express.static('client')); 

app.use(function (req, res) { 
    res.send('Sorry, Page Not Found'); 
}); 


console.log("port we're about to run on: " + port); 

app.listen(port, function() { 
    console.log('Ready on port %d', port); 
}).on('error', function (err) { 
    console.log(err); 
}); 

在我的主要目標網頁,我點擊那是我反應的組分之一這樣定義的鏈接

<Link to={`/interviews/companies/${company.id}`} 
     params={{id: company.id}} 
     className="ft-company" 
     ref="link"> 
    {company.name} 
</Link> 

這最初工作正常。我發送到/面試/公司/ 6例如,它使我的採訪分量就好

這裏是我的路由定義:

const App = Component({ 
    render() { 
     return (
      <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}> 
       <Route path="/"> 
        <IndexRoute component={HomePage}/> 
        <Route name="interview" path="interviews/companies/:companyId" component={Interview}/> 
       </Route> 
       <Route path="/" component={Container}></Route> 
      </Router> 
     ); 
    } 
}) 

回答

2

你需要在你的Web服務器來服務添加索引條目.html爲每個獲取html請求。

導入庫:

var history = require('connect-history-api-fallback'); 

現在你只需要到中間件添加到您的應用程序,像這樣:

var connect = require('connect'); 

var app = connect() 
    .use(history()) 
    .listen(3000); 

當然,你也可以使用這片中間件帶快遞:

var express = require('express'); 

var app = express(); 
app.use(history()); 

https://github.com/bripkens/connect-history-api-fallback

+0

唯一的問題是現在,當我刷新頁面刷新,但我的圖片打破 – PositiveGuy

+0

您應該從靜態目錄服務的圖像,嘗試後移動這個中間件您的靜態的 –

+0

你是什麼意思移動什麼中間件?我的圖像在客戶端文件夾中... – PositiveGuy