Das muss etwas wirklich dumm sein. Ich habe gerade angefangen mit Scotty zu spielen und kann den statischen Inhalt nicht richtig bedienen.Web Scotty: Datei nicht gefunden, während statische Dateien dienen
import Network.HTTP.Types
import Web.Scotty
import qualified Data.Text as T
import Data.Monoid (mconcat)
import Data.Aeson (object, (.=))
import Network.Wai.Middleware.Static
main = scotty 3000 $ do
middleware $ staticPolicy (noDots >-> addBase "static")
get "/" $ file "index.html"
Ziemlich einfach. Das finden Sie in ein paar skotty Tutorials. Aber es funktioniert nicht aus irgendeinem Grund. Der Zugriff über '/' im Browser gibt mir die 'Datei nicht gefunden' Sache. Wenn ich '/index.html' im Browser eintippe - funktioniert es. Aber es ist falsch! Ich möchte, dass es über '/' zugänglich ist, aber nicht '/index.html'. Es ignoriert die Wurzel und nimmt die HTML-Datei direkt auf. Wie kann ich index.html über '/' root bereitstellen? Es gibt nicht viele Informationen in der Umgebung und ein paar Tutorials, die ich gefunden habe, zeigen auf das obige Beispiel oder ähnliches, das nicht wie erwartet funktioniert.
Ich habe versucht, die Header auf 'Text/HTML' und was nicht ... Kein Glück.
Vielen Dank für Ihre Antwort. Also, wenn ich es richtig verstehe, nimmt die 'Datei'-Funktion einen Dateipfad relativ zum aktuellen Arbeitsverzeichnis und hat nichts mit dem statischen Middleware-Verzeichnis zu tun, oder? Es ist ein bisschen verwirrend, da es so aussieht, als ob ich die Middleware nicht brauche, um statische HTML-Dateien zu liefern, während die wenigen skotty-Beispiele im Netz dich anders denken lassen. Es scheint, dass statische Middleware-Richtlinien nur benötigt werden, um CSS- und Javascript-Dateien und nicht die eigentlichen HTML-Dateien zu enthüllen. –
die Middleware ist nützlich, wenn Sie keine explizite Route für jede Ihrer Dateien wünschen – Carsten