我正在探索Go的深度,并且一直在尝试编写一个简单的Web应用程序,以围绕所有内容。 我正在尝试服务React.js应用程序。
以下是Go服务器的代码。 我有
例如,我需要能够将
Webserver.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package main import ( "net/http" "log" "fmt" "os" "github.com/BurntSushi/toml" "github.com/gorilla/mux" ) type ServerConfig struct { Environment string Host string HttpPort int HttpsPort int ServerRoot string StaticDirectories []string } func ConfigureServer () ServerConfig { _, err := os.Stat("env.toml") if err != nil { log.Fatal("Config file is missing: env.toml") } var config ServerConfig if _, err := toml.DecodeFile("env.toml", &config); err != nil { log.Fatal(err) } return config } func IndexHandler (w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r,"./src/index.html") } func main () { Config := ConfigureServer() router := mux.NewRouter() // Configuring static content to be served. router.Handle("/dist/", http.StripPrefix("/dist/", http.FileServer(http.Dir("dist")))) // Routing to the Client-Side Application. router.HandleFunc("/", IndexHandler).Methods("GET") log.Printf(fmt.Sprintf("Starting HTTP Server on Host %s:%d.", Config.Host, Config.HttpPort)) if err := http.ListenAndServe(fmt.Sprintf("%s:%d", Config.Host, Config.HttpPort), router); err != nil { log.Fatal(err) } } |
- 希望精通大猩猩的人能回答您的问题。 您有理由使用大猩猩复用器吗? 似乎stdlib mux可以很好地处理此问题。
- 我不认为这是造成问题的图书馆。 香港专业教育学院尝试删除大猩猩和我得到相同的问题。 大猩猩的理由是稍后再了解API和Auth服务的全部内容。
根据大猩猩mux文档,执行此操作的正确方法是在
1 | router.PathPrefix("/dist/").Handler(http.StripPrefix("/dist/", http.FileServer(http.Dir("dist")))) |
如果您在文档中搜索类似
缺省情况下,此通配符行为实际上是通过net / http中的模式匹配机制来实现的,因此,如果您不使用大猩猩,而仅使用默认的net / http,则可以执行以下操作:
1 | http.Handle("/dist/", http.StripPrefix("/dist/", http.FileServer(http.Dir("dist")))) |
文件访问路径可能有问题。 尝试:
1 2 | // Strip away"/dist" instead of"/dist/" router.Handle("/dist/", http.StripPrefix("/dist", http.FileServer(http.Dir("dist")))) |
-
仍然不起作用。 浏览器中的URL或cURL为
http:localhost:8000distfilename.js 。 我会做一些记录以确保请求和文件名。 -
如果句柄URL与StripPrefix相同,则一旦您尝试访问文件,它将从URL中删除
dist 。