Экспресс-регулярные маршруты больше не знают, как загружать статические ресурсы - PullRequest
0 голосов
/ 29 января 2019

Вопрос

Как использовать встроенный 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 и т. Д. Возвращаясь к первому решению и к тому же пути, которыйЭкспресс ранее искал, чтобы найти статические активы, теперь загружается полностью нормально.

Точная ошибка, которую я получаю:

Error Message

Вещина заметку

  • Я использую 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"
}

1 Ответ

0 голосов
/ 29 января 2019

app.use(/\/expressadminarea[\n\r\t\s]*(?:\?.*|$)|\/expressadminarea[\n\r\t\s]*\/.*$/, express.static(__dirname + '/views')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...