Описание
У меня есть проект 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. Но я не могу этого сделать, так как обновление браузера будет проблемой.