Вопрос
Как использовать встроенный URL-процессор regex или Express для правильной загрузки статических файлов?
Ожидаемое поведение
Экспресс должен соответствовать первому маршруту, по которому он работаетнаходить и загружать файлы, как обычно.
Actual Behavior
- Получение ошибок, что статические файлы имеют неправильный тип MIME.
- React
manifest.json
незагружен правильно.
Объяснение
Я пытаюсь указать моему маршрутизатору Express, где искать статические файлы, используя React.До сих пор я пробовал несколько с одним решением, но это означает повторение в основном одной и той же строки дважды.Теперь я надеюсь превратить это в один вызов метода .use()
с использованием встроенного процессора строковых маршрутов regex или Express.
Текущее рабочее решение
app.use('/expressadminarea', express.static(__dirname + '/views')
app.use('/expressadminarea/?*', express.static(__dirname + '/views')
Что должно работать, но не
app.use(/expressadminarea\/.*|\/expressadminarea/, express.static(__dirname + '/views')
Во втором решении я говорю Express явно искать /expressadminarea/< anything or nothing >
или /expressadminarea
.Я проверил регулярное выражение, и оно соответствует любому маршруту, который мне нужен, но по какой-то причине Express больше не знает, как загрузить статические ресурсы, CSS, JS и т. Д. Возвращаясь к первому решению и к тому же пути, которыйЭкспресс ранее искал, чтобы найти статические активы, теперь загружается полностью нормально.
Точная ошибка, которую я получаю:
Вещина заметку
- Я использую React для представлений
- Поток сборки странный, но я использую модифицированную версию
yarn/npm build
, которая будет запускать обычную сборку и перемещать файлыв мой указанный каталог /views
, который ищет мой сервер Express. - Этот каталог сборки не изменен, поэтому все внутренние файлы / каталоги такие же, как и обычная сборка из React.
- Я указал, что React должен начать смотреть на
<< domain name >>/expressadminarea
, прежде чем пытаться загрузить ресурсы с помощью пользовательского .env
файла и поместить PUBLIC_URL="/expressadminarea"
внутрь. - Я не припоминаю внесения каких-либо изменений в
manifest.json
файл, но кажется, что он появляется как ошибка, хотя я не думаю, что это является причиной каких-либо проблем, поэтому для справки:
manifest.json
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}