проблема с путем по умолчанию для статических файлов с помощью Suave, в F#

#f# #suave

Вопрос:

Я не понимаю документ, когда дело доходит до обслуживания статических файлов.

У меня есть сайт, на котором серверная часть развернута в /приложение в контейнере docker, а интерфейсная часть развернута в /приложение/интерфейс

Основной файл для интерфейса находится по адресу: /app/frontend/index.html

В конфигурации у меня есть это:

 homeFolder = Some "/app/frontend"
 

и затем:

 GET >=> choose
    [
        path "/healthcheck" >=> Successful.OK "ok"
        pathScan "/checkqr/%s" checkQRCode
        path "/" >=> Files.file "index.html"
        Files.browseHome
    ]
 

когда я иду в domain.com Я получаю 404, но когда я иду в domain.com/index.html Я получаю индекс.

что я пропустил с синтаксисом? Я хотел бы служить index.html файл, когда собираетесь domain.com


Тесты, проведенные за это время:

 path "/" >=> Files.browse "index.html"
path "/" >=> Files.file "index.html"
path "/" >=> Files.browseFile "/app/frontend" "index.html"
path "/" >=> Files.browseFile "frontend" "index.html"
path "/" >=> Files.sendFile "index.html" true
path "/" >=> Files.file (Files.resolvePath "/app/frontend" "index.html")
path "/" >=> Files.browseFileHome "index.html"
path "/" >=> Files.file "/app/frontend/index.html"
 

ни один из них не работает.
Я подтвердил, что файл находится по адресу /app/frontend/index.html

Ответ №1:

Files.file не заглядывает в домашнюю папку, но Files.browseFileHome делает:

 path "/" >=> Files.browseFileHome "index.html"
 

Я согласен, что документация по этому вопросу очень расплывчата.

Комментарии:

1. К сожалению, я все еще получаю 404

2. Хм, я не знаю, что сказать. Для меня это прекрасно работает. Вы также можете попробовать разрешить путь вручную, например: path "/" >=> Files.file (Files.resolvePath home "index.html") , где home находится строка, содержащая путь к домашней папке.

3. Я внес правку со всеми проведенными тестами. Возможно, я неправильно определяю домашнюю папку, но это просто абсолютный путь: /приложение/интерфейс

4. извините, это была моя вина, что новый код не работает, и я потратил день на тестирование старого :/ docker может быть забавным… ваш ответ хорош!