【发布时间】:2021-09-22 04:03:57
【问题描述】:
我正在使用 github.com/webview/webview 在 Go 应用程序上呈现 Web 视图。它在我正在编写它的一个系统上运行良好。但在某些全新安装的系统上,该请求无法到达 http 服务器。看来故障是在 webview dll 中。但是我不知道如何调试它。
目前在 Windows 10 Pro x64 21H1 上使用 Go 1.17.1
我正在运行非常简单的代码,类似于示例...我还使用 go 来提供 http 页面。然后我打开一个 webview 框与之交互。
- 在 Windows 开发机器上,一切正常。
- 在单独全新安装 Windows(所有相同版本)时,该框显示为空白 - 只是白色。虽然没有崩溃。只是没有显示任何内容。
- 从本地计算机上的浏览器访问相同的 URL 是可行的。所以页面可以正常工作。
- 更改 URL 以引用外部站点(例如 http://google.com),它适用于所有计算机
- 在某些机器上,它可以工作。其他人没有。
- 我将 DLL 与 EXE 放在同一个文件夹中。
- 添加调试语句,它主要是按预期执行所有内容。
- 但是,请求没有发送到 HTTP 服务器
- 顺便说一句,该代码在 Linux 上也可以正常工作...
我能看到的唯一模式是工作的 Windows 机器似乎是已经存在并更新了一段时间的旧机器。相对新鲜的安装似乎失败了。那么一定有某种微妙的依赖关系?
我不确定如何调试它。它似乎在 Webview 代码中失败了。
任何建议将不胜感激...下面的简单测试代码...
main.go
package main
import (
"html/template"
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/webview/webview"
)
var (
IPport = "127.0.0.1:8080"
URL = "http://" + IPport
)
func main() {
log.Print("Starting main")
go HTTPServer(IPport)
OpenUI(URL)
}
func OpenUI(url string) {
log.Print("Starting OpenUI")
w := webview.New(true)
defer w.Destroy()
w.SetTitle("Webview Window")
w.SetSize(800, 600, webview.HintFixed)
w.Navigate(url)
w.Run()
}
func HTTPServer(ipPort string) {
log.Print("Starting HTTPserver")
rtr := mux.NewRouter()
rtr.HandleFunc("/", Page)
log.Printf("Listening on %s\n", ipPort)
err := http.ListenAndServe(ipPort, rtr)
if err != nil {
log.Print(err)
}
}
func Page(w http.ResponseWriter, r *http.Request) {
log.Print("Starting Page handler")
var err error
tmpl := template.New("page")
if tmpl, err = tmpl.ParseFiles("page.gohtml"); err != nil {
log.Print(err)
}
if err = tmpl.ExecuteTemplate(w, "page", nil); err != nil {
log.Print(err)
}
}
page.gohtml
{{define "page"}}
<!doctype html>
<html lang="en">
<body>
<h1>Hello Page</h1>
</body>
</html>
{{end}}
工作系统的输出...
2021/09/21 11:51:00 Starting main
2021/09/21 11:51:00 Starting OpenUI
2021/09/21 11:51:00 Starting HTTPserver
2021/09/21 11:51:00 Listening on 127.0.0.1:8080
2021/09/21 11:51:02 Starting Page handler
失败系统的输出...同样,如果您使用网络浏览器点击它,这将起作用...例如边缘
2021/09/21 11:52:00 Starting main
2021/09/21 11:52:00 Starting OpenUI
2021/09/21 11:52:00 Starting HTTPserver
2021/09/21 11:52:00 Listening on 127.0.0.1:8080
【问题讨论】: