如何解决Go默认servemux异常消失的怪异错误
在实施Go的默认servemux时遇到了一个奇怪的错误。问题是此错误持续了一天,然后突然消失,代码完全没有变化。我想通过简单的登录和注册页面以及模板来进行练习。
我出于兴趣将其发布在这里,以查看是否有更聪明的人可以弄清楚为什么会发生这种情况。
复制步骤:
- 运行go应用“ main.go”
- 在浏览器中转到http:// localhost:8080 / login-登录页面加载正常。
- 尝试http:// localhost:8080 / register-程序崩溃并退出。
在控制台中,我收到此错误:
2020/09/28 10:53:19 &{0xc00005eb40 0xc000232000 {} 0xed9c60 false false false false 0 {0 0} 0xc000210040 {0xc0002180e0 map[] false false} map[] false 0 -1 0 false false [] 0 [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0 0 0] [0 0 0] 0xc000216070 0} 500 template: no template "register.gohtml" associated with
template "login.gohtml"
exit status 1
这是我的文件结构:
Package
-views
-login.gohtml
-register.gohtml
-model
-controllers
-main.go
目前,这些模板只是一个基本的html样板,分别表示“这是登录名”和“这是注册”,以进行测试。
这是main.go中的代码:
package main
import (
"log"
"net/http"
"text/template"
)
//Globals
var tpl *template.Template
//Parsing initial templates removes need to parse at response function.
func init() {
tpl = template.Must(template.ParseGlob("./views/*.gohtml"))
}
//Router
func main() {
http.HandleFunc("/",login)
http.HandleFunc("/register/",register)
http.HandleFunc("/login/",login)
http.ListenAndServe(":8080",nil)
}
//Login page handler
func login(w http.ResponseWriter,req *http.Request) {
err := tpl.ExecuteTemplate(w,"login.gohtml",nil)
if err != nil {
log.Fatalln(w,http.StatusInternalServerError,err)
}
}
//Register page handler
func register(w http.ResponseWriter,"register.gohtml",err)
}
}
正如我所说的,由于某种原因,它只是重新开始工作,而无需更改代码或只花费时间。
解决方法
正如您在golang sources中看到的那样,log.Fatal(ln|f)
将触发os.Exit(1)
。
我假设您遇到register.gohtml
的问题,请尝试仅打印该错误以了解它,而不是使用Fatal失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。