Запуск приложения React в подкаталоге: методы и параметры конфигурации

Чтобы запустить приложение React в подкаталоге, вы можете использовать несколько методов. Вот несколько вариантов:

  1. Использование поля homepageв package.json: в файле package.jsonвашего приложения React вы можете указать базовый URL-адрес вашего приложения. используя поле домашняя страница. Установите значение пути к подкаталогу, в котором вы собираетесь развернуть свое приложение.

    {
     "name": "my-react-app",
     "version": "1.0.0",
     "homepage": "/subdirectory",
     // ...
    }

    После внесения этого изменения создайте свое приложение, используя npm run buildили yarn build. Сгенерированные статические файлы будут иметь правильные ссылки на ресурсы и маршруты в подкаталоге.

  2. Использование React Router. Если ваше приложение использует React Router для маршрутизации, вы можете установить свойство basenameв компоненте BrowserRouter.

    import { BrowserRouter } from 'react-router-dom';
    ReactDOM.render(
     <BrowserRouter basename="/subdirectory">
       <App />
     </BrowserRouter>,
     document.getElementById('root')
    );

    Это гарантирует, что все маршруты относятся к подкаталогу.

  3. Использование конфигурации на стороне сервера. Если вы используете сервер для обслуживания своего приложения React, вы можете настроить сервер для правильной обработки запросов к подкаталогу. Например, если вы используете Express.js, вы можете определить обработчик маршрута для пути к подкаталогу и соответствующим образом обслуживать приложение.

    const express = require('express');
    const app = express();
    app.use('/subdirectory', express.static('build'));
    app.listen(3000, () => {
     console.log('Server is running...');
    });

    Этот подход позволяет управлять конфигурацией подкаталога на уровне сервера.

Это несколько методов, которые вы можете использовать для запуска приложения React в подкаталоге. Не забудьте настроить путь к подкаталогу и внести все необходимые изменения в зависимости от настроек вашего конкретного проекта.