Go Buffalo и угловое приложение с пакером не работает после сборки - PullRequest
0 голосов
/ 04 января 2019

Описание

У меня есть проект setup buffalo, который обслуживает angular 6 front-end.Все мои API написаны в буйволах со своими собственными маршрутами с префиксом / api, в то время как внешние интерфейсы написаны в угловых.Buffalo выполняет рендеринг index.html из папки dist, используя packr для упаковки этой папки.Проблема в том, что приложение отлично работает локально с моей средой разработки (buffalo dev).Тем не менее, он не отображает интерфейс при окончательной сборке (buffalo build), хотя API работают.

Структура проекта

Угловой репозиторий находится в каталоге webapp, а его сборка - в папке webapp / dist.

Buffalo отображает его с помощью packr.

actions> 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{},
        })
    }

actions> 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)

actions> 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 buffalo build будет успешным с финальным двоичным файлом.Более того, этот двоичный файл работает нормально и запускает приложение на 127.0.0.1:3000.Тем не менее, браузер не отображает пользовательский интерфейс, он говорит, что не может найти.Интересно, что вы все еще можете видеть все угловые файлы, такие как http://127.0.0.1:3000/vendor.js. Только index.html не отображает.Помните, API также работают.

Для отладки я переименовал index.html в app.html и собрал его, используя buffalo build.Приложение Angular было запущено, если я вручную запустил http://127.0.0.1:3000/app.html. Но я не могу этого сделать, так как обновление браузера будет проблемой.

...