我正在尝试将我的应用程序放到 Heroku 上。我在前端使用 Angular,在后端使用 Go。
我遵循了本教程 http://mmcgrana.github.io/2012/09/getting-started-with-go-on-heroku.html
但是,当我转到我的 heroku 应用程序的域时,我得到了我的应用程序的目录(git 中的所有内容)。当我导航到/app 文件夹(我的 Angular 应用程序所在的位置)时,它会显示该应用程序。
我不希望我的应用出现在
foobar.herokuapp.com/app/#/
我希望它在
foobar.herokuapp.com
我的应用程序目录的简化版本是:
foobar
- /app
- /server/server.go
- .godir // contains "app"
- Procfile // contains "web: server"
我从/server 文件夹中运行了“go get”
这些工作:
$ PORT=5000 demoapp
$ curl -i http://127.0.0.1:5000/
这是我的简单 server.go
package main
import (
"github.com/gorilla/handlers"
"log"
"net/http"
"os"
)
func main() {
log.Println("Starting Server")
http.Handle("/", logHandler(http.FileServer(http.Dir("../app/"))))
log.Println("Listening...")
panic(http.ListenAndServe(":"+os.Getenv("PORT"), nil))
}
func logHandler(h http.Handler) http.Handler {
return handlers.LoggingHandler(os.Stdout, h)
最佳答案
将您的文件服务器目录从 "../app/"
更改为 "app/"
(相对)或 "/app/app/"
(绝对)应该可以解决问题。
http.Handle("/", logHandler(http.FileServer(http.Dir("app/"))))
您的项目根目录是 Heroku 执行 Procfile 命令时的工作文件夹。它有绝对路径 /app
这就是为什么 ../app
带你回到你的项目根目录。
尽管您的 server.go
存储在 ./server
子文件夹中,但它仍然使用 package main
编译到项目根目录中。
关于angularjs - Angular 和 Go on heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832559/