Как обслуживать статические файлы 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')));