Разверните приложение React в подкаталог, используя HashRouter и Traefik - PullRequest
0 голосов
/ 25 марта 2020

У меня проблема в том, что я не могу подать приложение реакции в подкаталог с использованием HashRouter. Я уже попробовал решения, предложенные в этом и этом вопросах, но он не работает, как ожидалось.

У меня есть следующая архитектура:

  • Traefik в качестве обратного прокси
  foo-service:
    image: foo
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.foo.rule=Host(`foo.localhost`) && PathPrefix(`/bar`)"
      # The line below is done in order to nginx to serve the files on the root 
      - "traefik.http.middlewares.pathStrip.stripprefix.prefixes=/bar"
      - "traefik.http.routers.foo.middlewares=pathStrip@docker"
  • nginx, обслуживающий React Приложение (которое использует HashRouter)

    Проблема здесь в том, что на package.json, когда я использую "homepage": "." и я ввожу foo.localhost/bar, я получаю много 404 ошибок, потому что ссылки на ресурсы, такие как js / css расположены на ./static/css/...css вместо bar/static/css/...css.

    Когда я ставлю "homepage": "/bar" ресурсы загружаются правильно, но URL становится foo.localhost/bar#/login, что кажется неправильным.

    И, наконец, когда я устанавливаю "homepage": "/bar" и <HashRouter basename={'/bar'}>, ресурсы также загружаются правильно, но тогда URL становится foo.localhost/bar#/bar/login, что является катастрофой.

Я знаю, что мое второе решение " очевидно «самое близкое к правильному решению, но мне, честно говоря, не нравится это, потому что установка пути на package.json кажется мне плохой. Вместо этого я хотел бы только изменить конфигурацию обратного прокси-сервера и позволить приложению быть «agnosti c».

Заранее спасибо.

...