我在HTML文件中调用React app之后将其与Webpack捆绑在一起。但是,当我使用Golang和html / template查看HTML文件时,它会出错。
我的HTML文件:index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Note App</title>
</head>
<body>
<div id="root"></div>
<script src="public/bundle.js"></script>
</body>
</html>
我的Golang文件:index.go
package main
import (
"net/http"
"html/template"
"path/filepath"
)
func handle(w http.ResponseWriter, r *http.Request) {
fp := filepath.Join("views", "index.html")
t := template.Must(template.ParseFiles(fp))
t.Execute(w, nil)
}
func main() {
http.HandleFunc("/", handle)
http.ListenAndServe(":8080", nil)
}
答案 0 :(得分:6)
问题似乎是您正在旋转仅提供HTML模板而不提供脚本的服务器。当浏览器尝试加载脚本时,服务器将返回您的索引页。
看看https://www.alexedwards.net/blog/serving-static-sites-with-go;这篇文章讨论了如何提供静态文件。
出于您的目的,您可以通过在主方法的开头添加以下几行来实现:
fs := http.FileServer(http.Dir("public"))
http.Handle("/public/", http.StripPrefix("/static/", fs))
这将加载目录“ public”(相对于已编译的可执行文件)中的所有文件,并将其提供到url / public / path / to / file
请注意:默认情况下,这将为您的公共目录启用目录列表(用户将能够看到该目录和所有子目录中的文件列表)。请查看此问题的答案,以获取有关如何禁用目录列表的信息:https://stackoverflow.com/a/40718195/6346483
答案 1 :(得分:0)
您在服务public/bundle.js
吗?
如果没有,您需要以某种方式提供服务。例如,您可以使用net/http
https://golang.org/pkg/net/http/#ServeFile