//それが現在動作しますので、この答えは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)}
/>
)}
script
変数はmain.jsファイル名が含まれているので、これは使用時ハッシュが含まれると(標準RSKで動作します - - リリースビルド)。この変数の値は、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