Go buffalo,构建后使用packr的angular应用无法正常运行

时间:2019-01-04 06:33:23

标签: angular go buffalo

说明

我有一个设置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应用。但是我不能接受,因为浏览器刷新将是一个问题。

0 个答案:

没有答案