2016-03-29 44 views
1

我試圖讓我的應用程序從服務器渲染,因此正在努力實現從這裏ServerRendering例如:http://redux.js.org/docs/recipes/ServerRendering.html服務器渲染的SyntaxError與之反應/終極版/快遞

我可以成功運行server.js但我得到一個「未捕獲的SyntaxError:意外的令牌<」錯誤@ bundle.js:2一旦我加載本地主機。我相信,它與renderFullPage()函數來完成:

function renderFullPage(html, initialState) { 
    return ` 
    <!doctype html> 
    <html> 
     <head> 
     <title>Redux Universal Example</title> 
     </head> 
     <body> 
     <div id="root">${html}</div> 
     <script> 
      window.__INITIAL_STATE__ = ${JSON.stringify(initialState)} 
     </script> 
     <script src="/dist/bundle.js"></script> 
     </body> 
    </html> 
    ` 
} 

如果我刪除線<script src="/dist/bundle.js"></script>錯誤消失,但此時計數器不工作。

這裏是bundle.js的錯誤引用:

在我的DIST文件夾

bundle.js

應當參照bundle.js但它不是出於某種原因?如果我使index.html文件與renderFullPage返回的內容完全相同,除了擺脫${html}<script> window.__INITIAL_STATE__ = ${JSON.stringify(initialState)} </script>

那麼計數器就可以正常工作。當我做服務器端渲染時,它看起來像客戶端無法找到bundle.js代碼,因此創建一個與從服務器接收到的代碼完全相同的代碼,所以當它運行到html時出現錯誤它期待着JavaScript。

+0

」如果我刪除該行,錯誤消失,但計數器不起作用。「你在說什麼? – David

+0

,我認爲問題是客戶端沒有拿起/dist/bundle.js文件,這是我的webpack輸出到的文件。 –

+0

呵呵......那個在我之前沒有露面......對不起 – David

回答

0

這是因爲您的bundle.js包含HTML而不是您的客戶端腳本。你是否使用了全路徑並且不讓它加載你的靜態資產?您的express.static中間件use調用應在此位代碼之前執行(中間件順序很重要)。 「

相關問題