Я настраиваю веб-сервер с Go (используя Echo) в качестве бэкэнда и Angular 6 в качестве внешнего интерфейса.Что я делаю, так это создаю простое приложение, используя Angular-cli 'ng new my-app', добавляю компонент helloworld и маршрут '/ helloworld', а затем встраиваю его в производство с помощью 'ng build --prod', которое выдает как 'distпапка.Структура папки:
dist
├── assets
│ ├── icons
│ └── logo.png
├── favicon.ico
├── index.html
├── main.js
├── polyfills.js
├── runtime.js
└── styles.css
Затем я должен Go отправить статические файлы в эту папку 'dist' со следующим кодом main.go
func main() {
e := echo.New()
e.Static("/", "dist")
e.File("/", "dist/index.html")
e.Start(":3000")
}
Теперь, когда я использую браузер и перехожу на'localhost: 3000 /', тогда страница будет отображаться правильно, я могу перемещаться по href благодаря угловой маршрутизации, например: 'localhost: 3000 / home', страница будет отображаться правильно, но если я попытаюсь обновить ее, то Echoвернуть содержимое страницы, которое показывает:
{"message": "Not Found"}
Я знаю, что могу настроить маршрут вручную следующим образом:
e.File("/home","dist/index.html")
Однакоесли у меня есть намного больше маршрутов, то это довольно хлопотно.
Что мне нужно, так это то, что любой маршрут, который не определен для Echo, будет отображен в 'index.html'.Я попытался с:
e.File("/*", "dist/index.html")
и
e.GET("/*", func(c echo.Context)
return c.File("dist/index.html")
})
, но затем я получаю пустую страницу с ошибкой
"Uncaught SyntaxError: Unexpected token < "
со всеми 3 файлами main.js,polyfill.js и runtime.js
Я новичок в Echo, поэтому не знаю, как это сделать.