サーバーにレンダリングされたクラシックWebアプリケーションがあります。 Reactで単一ページアプリケーションとして管理パネルを作成したい。 https://smyapp.example.com/admin/ から管理パネルを提供したい。 create-react-app
を使用しようとしましたが、ルートURLからSPAを提供すると想定しています。 create-react-app
サブディレクトリからアプリを提供するように"admin"
を構成するにはどうすればよいですか?ドキュメントで"homepage"
プロパティを見つけましたが、適切に理解するには完全なURLが必要です。アプリがいくつかの環境にデプロイされているため、完全なURLを提供できません。
これには、package.json
にエントリを追加する必要があります。
キー「ホームページ」を追加します:yourpackage.jsonの「your-subfolder /」すべての静的ファイルは「your-subfolder」からロードされます
サブフォルダーがなく、同じフォルダーからロードする必要がある場合は、パスを「./」として追加する必要があります
"homepage": "./"
ここ から
Create-react-app v2およびreact-router v4の場合、次のコンボを使用して、 "/ app"の下に本番(ステージング、uatなど)アプリを提供しました。
package.json:
"homepage": "/app"
次に、アプリのエントリポイントで:
<BrowserRouter basename={process.env.PUBLIC_URL}>
{/* other components */}
</BrowserRouter>
そして、すべてがローカル開発環境とデプロイされた環境の両方で「機能する」だけです。 HTH!
おそらくreact-router
とそのrelativebasename
パラメーターを使用すると、サブディレクトリからアプリを提供できます。
basename
は、すべての場所のベースURLです。サーバー上のサブディレクトリからアプリを提供する場合、これをサブディレクトリに設定することをお勧めします。適切にフォーマットされたベース名には、先行スラッシュが必要ですが、後続スラッシュは含まれません。
例えば :
<BrowserRouter basename="/calendar"/>
そう <Link to="/today"/>
はレンダリングします<a href="/calendar/today">
参照: https://reacttraining.com/react-router/web/api/BrowserRouter/basename-string
ごきげんよう!
package.jsonに次のようなものを入れます。
"homepage": " http:// localhost:3000/subfolder "、
パブリックサーバーまたはローカルサーバーで正常に動作します。もちろん、サブフォルダーはフォルダーでなければなりません。