Как обслуживать статические файлы ReactJS с помощью expressJS?

Проблема

я успешно обслужил индекс.html-файл моего приложения React, но index.js заменяет <root> в html-файле с моим первым компонентом React не запускается на ReactDOM.render. как сделать начать? если мое понимание обслуживания приложения React искажено определенным образом, я бы очень спасибо за разъяснение.

Структура Папок

  • / - содержит все файлы сервера, в том числе server.js
  • / client / - содержит все файлы React
  • / client / build/ - содержит все готовые к производству файлы клиента
    • /клиент/собрать/index.html
    • / client / build / static/js/main.[hash].js - кажется, это уменьшенная версия index.js С ReactDOM.render для my React app

Нынешнее Развертывание

  • я использую приложение create-react-app Facebook для каталога/ client / , включая npm run build для автоматического заполнения /client/build/

Фрагменты Файла

// server.js
let app = express();
app.use(express.static(path.join(__dirname, '../client/public')));

это успешно загружает индекс по умолчанию.html предоставлено create-react-app

// index.html
<body>
  <noscript>
    You need to enable JavaScript to run this app.
  </noscript>
  <div id="root"></div>
</body>

вышеуказанный раздел кода может / не может быть полезен, но это значение по умолчанию html-файл, который поставляется с create-react-app. Мне нужно заменить тег noscript с тегом скрипта, который ссылается на minified index.js файл? Я пытался это сделать, но ничего не вышло. изменился, но, возможно, это из-за неправильного относительного пути.

1 ответов


попробовав много разных вещей методом проб / ошибок, решение довольно простое:

обслуживать папку / client / build в статическом вызове, например:

app.use(express.static(path.join(__dirname, '../client/build')));