Go Web端点找不到静态index.html文件

fdbelqdn  于 2023-03-21  发布在  Go
关注(0)|答案(1)|浏览(155)

这是我的代码:

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文件夹?

jum4pzuy

jum4pzuy1#

根据您的命令,路径必须是./frontend/cmd/web/static,而不仅仅是./static。路径随工作目录而改变。
考虑嵌入静态目录,否则你必须使路径可配置(标志,环境变量等)。
嵌入的缺点是你必须在静态文件发生任何变化后重新构建你的程序。你也可以使用混合的方法。如果设置了标志(或者其他什么),使用它从磁盘提供服务,否则使用嵌入的文件系统。标志在开发过程中很方便,嵌入的文件系统使部署变得容易,因为你只需要复制程序的二进制文件。

相关问题