我想在 Go 中使用带 echo 的 React router dom 来为 React App 提供服务。但我在路由方面遇到了问题,因为如果我直接转到该路线,则会出现“未找到”错误
package main
import (
"fmt"
checkerror "server/checkError"
connectdb "server/connectDB"
"server/handler"
"github.com/gofor-little/env"
echo "github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
_ "github.com/lib/pq"
)
func main() {
err := env.Load(".env")
if err != nil {
fmt.Println(err.Error())
return
}
userDB := connectdb.UserDB{Name: "Hi", DBP: nil}
err = userDB.ConnectDB()
fmt.Println(userDB.DBP)
checkerror.Checkerror(err)
e := echo.New()
e.Static("/","build")
e.Use(middleware.Logger())
handler.Apihandler(e, userDB.DBP)
e.File("/","index.html")
e.Logger.Fatal(e.Start(":1323"))
defer func() {
fmt.Println("DB disconnected")
userDB.CloseDB()
}()
}
这是为应用程序提供服务的代码 请帮忙
我想访问react的路由
不要使用 static 来提供静态文件,而是使用 StaticWith config 的中间件,这样如果找不到路由,它可以重定向到 index.HTML
e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
Skipper: nil,
// Root directory from where the static content is served.
Root: "build",
// Index file for serving a directory.
// Optional. Default value "index.html".
Index: "index.html",
// Enable HTML5 mode by forwarding all not-found requests to root so that
// SPA (single-page application) can handle the routing.
HTML5: true,
Browse: false,
IgnoreBase: false,
Filesystem: nil,
}))
添加到之前的答案。当
e.Static
直接提供文件时,echo mux 会拦截路由并拒绝它们。因此您会看到“未找到”错误。