我有一个设置buffalo项目,该项目可用于角度 6个前端。我所有的API都是用buffalo编写的,它们自己的路由带有/ api前缀,而前端路由则用angular编写。 Buffalo正在从dist文件夹中呈现index.html,使用 packr 打包此文件夹。问题是应用程序可以在我的开发环境(buffalo dev
)本地正常运行。但是,尽管API正在运行,但它不会在最终版本(buffalo build
)上呈现前端。
Angular存储库位于webapp目录中,并在webapp / dist文件夹中进行构建。
Buffalo使用packr渲染它。
操作> render.go
//webapp distribution folder
var assetsBox = packr.NewBox("../webapp/dist")
func init() {
r = render.New(render.Options{
// HTML layout to be used for all HTML requests:
// HTMLLayout: "application.html",
//webapp distribution folder
TemplatesBox: assetsBox,
AssetsBox: assetsBox,
// Add template helpers here:
Helpers: render.Helpers{},
})
}
操作> app.go
// API routes
api := app.Group(API_PREFIX)
api.Use(Authorize)
// Set the request content type to JSON
api.Use(contenttype.Set("application/json"))
api.POST("/auth/create", AuthCreate)
api.GET("/users", UserList)
api.POST("/users", UserCreate)
api.Middleware.Skip(Authorize, AuthCreate,)
// Front-end routes
app.ServeFiles("/", assetsBox)
app.GET("/", HomeHandler)
app.GET("/{path:.+}", HomeHandler)
操作> home.go
// HomeHandler is a default handler to serve up
// a home page.
func HomeHandler(c buffalo.Context) error {
//webapp entry point
return c.Render(200, r.HTML("index.html"))
}
正如我之前提到的,index.html文件位于webapp / dist文件夹中。
buffalo dev
将在http://127.0.0.1:3000上呈现UI
buffalo build
将成功使用最终二进制文件。甚至,此二进制文件运行良好,并以127.0.0.1:3000启动应用程序。但是,浏览器未呈现UI,它表示找不到。有趣的是,您仍然可以看到所有http://127.0.0.1:3000/vendor.js之类的角度文件。仅index.html不会呈现。请记住,API也可以使用。
要进行调试,我将index.html重命名为app.html并使用buffalo build
进行构建。如果我手动运行http://127.0.0.1:3000/app.html,则会启动Angular应用。但是我不能接受,因为浏览器刷新将是一个问题。