


Der Go-Web-Endpunkt kann die statische index.html-Datei nicht finden
php-Editor Banana hat herausgefunden, dass wir bei der Verwendung der Go-Sprache zum Entwickeln von Webanwendungen manchmal auf ein häufiges Problem stoßen: Wenn wir versuchen, auf den Web-Endpunkt zuzugreifen, erhalten wir einen 404-Fehler, der darauf hinweist, dass der statische Index .html nicht gefunden werden kann Datei. Diese Frage kann für Entwickler, insbesondere für Anfänger, verwirrend sein. Wie also sollen wir dieses Problem lösen? Als Nächstes stellen wir Ihnen die Lösung im Detail vor, damit Sie dieses Problem reibungslos lösen können.
Frageninhalt
Das ist mein Code:
package main import ( "fmt" "log" "net/http" ) const customport = "3001" func main() { fileserver := http.fileserver(http.dir("./static")) port:= fmt.sprintf(":%s", customport) http.handle("/", fileserver) fmt.printf("starting front end service on port %s", port) err := http.listenandserve(port, nil) if err != nil { log.panic(err) } }
Der Ordner der obersten Ebene ist microservices
und ist als Go-Arbeitsbereich festgelegt. Dieser Webdienst wird einer von vielen sein. Es befindet sich im folgenden Ordner:
microservices |--frontend |--cmd |--web |--static |--index.html |--main.go
Ich befinde mich im Microservice-Ordner der obersten Ebene und starte ihn mit: go run ./frontend/cmd/web
。它启动正常,没有错误。但是当我转到 chrome 并输入 http://localhost:3001
时,我得到 404 页面未找到。即使 http://localhost:3001/index.html
也会给出 404 页面未找到。我刚刚学习 go,不知道为什么找不到 ./static
Ordner?
Workaround
Gemäß Ihrem Befehl muss der Pfad ./frontend/cmd/web/static sein, nicht nur ./static. Das ist nicht portierbar; der Pfad ändert sich mit dem Arbeitsverzeichnis.
Erwägen Sie die Einbettung statischer Verzeichnisse. Andernfalls müssen Sie den Pfad konfigurierbar machen (Flags, Umgebungsvariablen usw.)
Der Nachteil der Einbettung besteht darin, dass Sie das Programm neu erstellen müssen, nachdem Sie Änderungen an den statischen Dateien vorgenommen haben.
Sie können auch eine Hybridmethode verwenden. Wenn das Flag (oder ein anderes) gesetzt ist, verwenden Sie es für die Bereitstellung von der Festplatte, andernfalls verwenden Sie das eingebettete Dateisystem. Dieses Flag ist während der Entwicklung praktisch und das eingebettete Dateisystem erleichtert die Bereitstellung, da Sie nur die Programmbinärdateien kopieren müssen.
package main import ( "embed" "flag" "io/fs" "net/http" "os" ) //go:embed web/static var embeddedAssets embed.FS func main() { var staticDir string flag.StringVar(&staticDir, "static-dir", staticDir, "Path to directory containing static assets. If empty embedded assets are used.") flag.Parse() var staticFS fs.FS = embeddedAssets if staticDir != "" { staticFS = os.DirFS(staticDir) } http.Handle("/", http.FileServer(http.FS(staticFS))) // ... }
Das obige ist der detaillierte Inhalt vonDer Go-Web-Endpunkt kann die statische index.html-Datei nicht finden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Go Zeigersyntax und Probleme bei der Verwendung der Viper -Bibliothek bei der Programmierung in Go -Sprache. Es ist entscheidend, die Syntax und Verwendung von Zeigern zu verstehen, insbesondere in ...

Warum bewirkt die Kartendiseration in Go alle Werte zum letzten Element? In Go -Sprache begegnen Sie, wenn Sie einige Interviewfragen konfrontiert sind, häufig Karten ...
