web.exe运行后报错,找不到目录文件

来源:6-4 build脚本和homeHandler

muke_007

2018-11-29

图片描述

本人用windows操作系统,用的Git-Bash工具
尝试过以下的方式:
曾经把main函数改成: router.ServeFiles("/src/*filepath", http.Dir("/video_server/templates"))也不行
handlers.go文件:
t, e := template.ParseFiles("./templates/home.html")

main.go文件:
router.ServeFiles("/statics/*filepath", http.Dir("./templates"))

完整的handlers.go文件:
package main
import (
github.com/julienschmidt/httprouter
“html/template”
“log”
“net/http”
)
type HomePage struct {
Name string
}
func HomeController(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
p := &HomePage{Name: “ajun”}
t, e := template.ParseFiles("./templates/home.html") //parser to bin for web page
if e != nil {
log.Printf(“parsing template home.html error :%s”, e)
return
}
t.Execute(w, p)
return
}

完整的main.go文件:

package main

import (
“net/http”
github.com/julienschmidt/httprouter
)
func RegisterHandler() *httprouter.Router {
router:=httprouter.New()
router.GET("/", HomeController)
router.POST("/", HomeController)
router.ServeFiles("/statics/*filepath", http.Dir("/templates"))
return router

}
func main() {
r:=RegisterHandler()
http.ListenAndServe(":8080", r)
}

写回答

2回答

陈大洋

2019-02-15

初步猜测你run错了web.exe文件,仔细看 build.sh文件,里边是copy了web文件放到`video_server_web_ui`文件夹下边,只有run这个文件夹里边的web.exe,才能找到相对路径的templates文件。

0
0

艾文西

2018-12-03

没用过windows来写代码,不过感觉是不是把静态文件放错地方了?

go编译后的二进制文件应该都在bin下面,你把静态文件放到src下面,自然是找不到的

0
3
muke_007
老师我已经放弃了win了,折腾了半天最后上虚拟机了,哈哈,微软,哎,拿什么拯救它.....感谢老师的回复
2018-12-07
共3条回复

Go语言实战流媒体视频网站,高效学习Go高性能开发

从零开始,全面掌握Go语言编码的架构风格和开发Web的关键技能

996 学习 · 268 问题

查看课程