我正在创建一个 SPA。 我正在尝试使用 index.html 响应所有请求 (我在前端处理路由)。
我的目录结构是这样的:
后端
-- main.go
前端
..(一些其他文件)..
-- index.html
整个项目位于“C:\Go\Projects\src\github.com\congrady\Bakalarka”
我的 main.go 文件如下所示:
package main
import (
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "../Frontend/index.html")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
当我运行我的 main.go 文件(使用 go run)时,我的本地主机总是响应“404 页面未找到”。 当我尝试使用 fmt 提供静态内容时,一切正常。
请帮忙,我被困在这个问题上很长时间了,我无法让它工作。 谢谢
最佳答案
请注意,如果您在源文件中对相对路径进行硬编码,则启动应用程序时您所在的目录很重要。
在当前配置中,确保从 Backend
目录启动应用程序,即
C:\Go\Projects\src\github.com\congrady\Bakalarka\Backend,
不是您的应用根目录
C:\Go\Projects\src\github.com\congrady\Bakalarka
或
将主文件中的字符串更改为Frontend/index.html并运行
C:\Go\Projects\src\github.com\congrady\Bakalarka
关于http - Go 服务器无法正确提供文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346832/