JavaScriptを有効にしてください

【React】サブディレクトリでReactを公開する

 ·  ☕ 1 分で読めます

【React】サブディレクトリでReactを公開する

Reactをサブディレクトリ上で公開したい場合はビルドしたものを配置するだけではできません。
Reactをサブディレクトリで公開する方法。

原因

原因は通常通りにビルドすると /static/ でファイルを読み込んでしまうため、ルートディレクトリ上に配置する必要があります。

解決

package.json

package.jsonhomepage を追加する。

1
2
3
4
5
6
7
{
  "name": "app",
  "version": "0.1.0",
  "private": true,
  "homepage": "./",
  // 省略
}

react-router-dom を使用している場合

react-router-dom を使用している場合だと上記対応だけでは不十分になります。
https://c-a-p-engineer.github.io/dev-tool/dev-tool に配置する例です。

package.jsonhomepage を追加する。

1
2
3
4
5
6
7
{
  "name": "app",
  "version": "0.1.0",
  "private": true,
  "homepage": "/dev-tool",
  // 省略
}

BrowserRouterbasename を追加します。
これでURLのベースの設定を行えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import React from "react";
import { BrowserRouter, Route, Routes } from "react-router-dom";
import HomePage from "./components/pages/HomePage";
import JsonFormatPage from "./components/pages/JsonFormatPage";
import SqlFormatPage from "./components/pages/SqlFormatPage";

const App = () => {
  return (
    <React.StrictMode>
      <BrowserRouter basename="/dev-tool/">
        <Routes>
          <Route path="/" element={<HomePage />} />
          <Route path="/json-format" element={<JsonFormatPage />} />
          <Route path="/sql-format" element={<SqlFormatPage />} />
        </Routes>
      </BrowserRouter>
    </React.StrictMode>
  );
};

export default App;
共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer