//這個答案描述RSK,因爲它目前是,它不是從你的問題清楚,如果你修改RSK的Html
組件或服務器端路由(也可能已經破解您的應用程序)
什麼是main.js?
main.js是你的所有JavaScript被WebPack捆綁在一起的地方,這就是爲什麼強制添加引用它的腳本標籤使其適用於非發佈版本的原因。
但是,你應該使用--release建立,因爲...
如果您在使用--release構建應用程序,文件內容哈希被添加到文件名。這意味着當內容更改文件名更改時。
由於舊版本(例如,在ISP)的任何緩存都針對具有不同名稱的文件,因此用更新名稱請求更新文件的客戶端將保證不會獲得舊版本。
那麼如何用散列指定正確的main.js名?
的Html
組分應該在<body>
像JSX片段:
{script && (
<script
id="source"
src={script}
data-initial-state={JSON.stringify(state)}
/>
)}
此工作在標準RSK因爲script
變量包含main.js文件名(與使用時包括在散列 - - 釋放構建)。這個變量值來自由WebPack構建的assets.js。然後通過server.js通過注入將Html
組件用於以上片段:
app.get('*', async (req, res, next) => {
const data = { title: '', description: '', style: '', script: assets.main.js, children: '' };
// ...
const html = ReactDOM.renderToStaticMarkup(<Html {...data} />);
謝謝。由於我不記得我更改server.js的原因。但我檢查了我的Html,js,它只有{script && }但是這個解釋很棒。 –
啊是的 - 它只有在RSK redux分支中有附加屬性。在主分支中,它只是{script && }。這聽起來像你現在正在排序的問題,如果是這樣,我會欣賞綠色滴答:) – cfogelberg