【问题标题】:Go server not serving files properlyGo 服务器无法正确提供文件
【发布时间】:2015-12-18 00:40:00
【问题描述】:

我正在创建一个 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)时,我的 localhost 总是以“404 page not found”响应。 当我尝试使用 fmt 提供静态内容时,一切正常。

请帮忙,我在这个问题上卡了很长时间,我无法让它工作。 谢谢

【问题讨论】:

  • 我试过你的代码,可以肯定的是,但它在这里工作。由于您使用的是相对路径,您是否确定您是从 Backend 目录而不是您的项目根目录中运行应用程序?

标签: http web go webserver localhost


【解决方案1】:

请注意,如果您在源文件中硬编码相对路径,则启动应用程序时所在的目录很重要。

在当前配置下,确保从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

【讨论】:

  • 您好,感谢您到目前为止的回答。我正在运行这个脚本:“去运行 C:\Go\Projects\src\github.com\congrady\Bakalarka\Backend\main.go”,我的 Gopath 是“C:\Go\Projects\” 顺便说一句,我认为我的 Go 代码工作了一次,但突然停止工作。是不是有别的问题? (依赖关系、localhost 的工作方式等)我认为 Go lang 甚至根本找不到我的 html 文件。
  • 这是关于工作目录的,即运行命令时所在的目录。正如我在评论中所说,您的代码没问题。
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
相关资源
最近更新 更多