http.ServeFile无法获取静态源,但命令运行可以得到

时间:2016-12-04 02:59:44

标签: go intellij-idea build command intellij-14

我使用Intelj IDEA来开发golang,但是当我使用debug来构建我的项目时,当调试到这行http.ServeFile(w, r, "./static/html/login.html")时,我得到404 not found,但是在命令运行中,我可以得到这个静态页面。

1 个答案:

答案 0 :(得分:0)

路径"./static/html/login.html"是相对路径。当您使用go run ...时,您可能当前位于此相对路径正确解析的目录中。 IntelliJ二进制文件可能在与go源不同的目录中执行,导致此相对路径不正确。

您可以在调用ServeFile(...)时使用绝对路径,将IDE配置为在源目录中执行go命令作为工作目录,或者允许将应用程序配置为使用任何给定路径静态内容的根源。前两个选项将暂时解决您的问题。当您必须运送二进制文件时,它将容易受到您现在遇到的同样问题的影响。第三个选项将允许您的应用程序处理任何环境,因为该路径可以由用户显式定义。