这是我的代码:
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)
}
}
顶级文件夹为microservices
,并设置为Go工作区。此Web服务将是许多服务之一。它位于以下文件夹中:
microservices
|--frontend
|--cmd
|--web
|--static
|--index.html
|--main.go
我位于顶层微服务文件夹中,并以以下内容开始:go run ./frontend/cmd/web
。它启动良好,没有错误。但当我去chrome和类型http://localhost:3001
我得到404页未找到。甚至http://localhost:3001/index.html
给404页未找到。我只是学习去,不知道为什么它找不到./static
文件夹?
1条答案
按热度按时间jum4pzuy1#
根据您的命令,路径必须是./frontend/cmd/web/static,而不仅仅是./static。路径随工作目录而改变。
考虑嵌入静态目录,否则你必须使路径可配置(标志,环境变量等)。
嵌入的缺点是你必须在静态文件发生任何变化后重新构建你的程序。你也可以使用混合的方法。如果设置了标志(或者其他什么),使用它从磁盘提供服务,否则使用嵌入的文件系统。标志在开发过程中很方便,嵌入的文件系统使部署变得容易,因为你只需要复制程序的二进制文件。