所以我在Go中遇到了奇怪的文件路径问题。这是我的文件结构。
// Check if each haystack contains at least one needle:
function check(needles, haystacks) {
needles = new Set(needles);
return haystacks.every(haystack => haystack.some(element => needles.has(element)));
}
// Example:
console.log(check(
["a", "b", "c"],
[["a", "c", "e", "g"], ["v", "x", "y", "z"]]
));
我的环境变量
C:/ProjectName/
-------------->bin/
-------------->pkg/
-------------->src/web/
---------------------->main.go
---------------------->controllers/Constants.go
---------------------->content/css/index.css
---------------------->views/index.html
在文件GOBIN=C:\ProjectName\bin
GOPATH=C:\ProjectName
中,我像index.html
那样访问css文件,但这不起作用。找不到<link href="/css/index.css"...
文件
同样在css
文件中我访问Constants.go
文件,如html
,但这也不起作用。
如果我像const indexFile string = "../src/web/views/index.htm"
那样访问css
文件,那么它可以正常运行,如果我像/content/css/index.css
那样访问index.html
文件,它也可以。
问题是我在一个团队中,其他人的代码以我的计算机无法运行的方式工作。每当我进行更改以使其在我的计算机上运行时,它就会打破其他所有人的计算机。
知道问题可能是什么以及如何解决问题?
谢谢,
编辑1:我的处理程序
"../web/views/index.htm"
alice - &gt; https://github.com/justinas/alice
上下文 - &gt; https://github.com/gorilla/context
函数router := httprouter.New()
router.GET(basic("/", IndexFunc))
func basic(p string, h func(http.ResponseWriter, *http.Request)) (string,
httprouter.Handle) {
return p, wrapHandler(alice.New(context.ClearHandler).ThenFunc(h))
}
func IndexFunc(w http.ResponseWriter, r *http.Request)
{
t, err := template.ParseFiles("../src/web/views/index.htm")
checkError(err)
t.Execute(w, nil)
}
只提供indexFunc
文件。
答案 0 :(得分:0)
我们需要查看您用来托管文件的代码,但通常我要为目录服务的是:
http.Handle("/content/", http.StripPrefix("/content/", http.FileServer(http.Dir("content"))
这将:
/content/*
我尝试将所有静态文件放在公共目录中以使其更容易。
我的猜测是你正在做http.Handle("/", http.Fileserver(http.Dir(""))
或其他什么,它只是在相对于工作目录的路径上提供所有文件。
修改强>:
在go应用中,您必须为每个处理程序指定路径。您需要移动文件以匹配所需的URL,或者定义多个url映射。我通常会在此设置中推荐处理程序:
/api
下的API处理程序一次定义一个(http.HandleFunc("/api/whatever", myHandler)
)
从/static/*
从单个目录提供的所有静态内容。 (上面的答案第一行)。因此/content/css/style.css
投放./content/css/style.css
其他任何东西都提供“index.html”。 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){ http.ServeFile(w,r,"path/to/index.html") }