gpt4 book ai didi

go - 如何使用 go 服务(正确地)一个 react-router?

转载 作者:IT王子 更新时间:2023-10-29 02:00:36 28 4
gpt4 key购买 nike

我正在尝试使用 go 为 react-router 提供服务,我已经做到了,但我遇到了麻烦,我认为我做的方式不正确,或者不完整。我正在使用 Mux。我遇到的麻烦是当我按下 <Link> 时在我的应用程序中,它正确地更改了 View ,但是当我尝试直接从浏览器更改它或尝试重新加载页面时,出现 404 错误

我尝试了不同的方式,我实际上是这样做的:

func main() {

var dir = "./static"

router := mux.NewRouter()

fs := http.FileServer(http.Dir(dir))
router.PathPrefix("/").Handler(fs)


fmt.Println("Server running in port :8000")

log.Fatal(http.ListenAndServe(":8000", router))

}

我希望服务器在所有请求中提供相同的目录,例如“/”、“/example”、“/example2”等。

最佳答案

我的猜测是您有一些静态内容并且您希望将其他所有内容转发到 index.html。我有一个类似的问题,我的解决方案是在所有 react-router url 前加上一个常量,这样我就可以在后端检测到它并转发它。我的代码看起来像这样:

router := mux.NewRouter()
router.PathPrefix("/public/").Handler(http.StripPrefix("/public/", http.FileServer(http.Dir("public"))))
router.HandleFunc("/", handleIndex).Methods("GET")
router.HandleFunc("/h/{param:.*}", handleIndex).Methods("GET")

在我的 react-router 中,我只是将所有路由从 {uri} 更改为 /h/{uri}

如果你真的想将所有内容转发给 react 代码而不需要任何后端检查 404 或任何东西,你可以这样做:

router := mux.NewRouter()
router.NotFoundHandler = ... // Write a function to serve the index file here
fs := http.FileServer(http.Dir(dir))
router.PathPrefix("/").Handler(fs)

关于go - 如何使用 go 服务(正确地)一个 react-router?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674626/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com