angularjs - Angular 和 Go on heroku

标签 angularjs heroku go procfile

我正在尝试将我的应用程序放到 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/

相关文章:

github - 在 github 存储库的子目录中获取包

heroku - 如何防止 CopyCopter(Heroku 上的客户端和服务器)文本恢复为默认值?

hash - 调用 Write(val) 然后调用 Sum(nil) 与哈希中的 Sum(val) 之间的区别?

android - Protractor 的 waitForAngular() 在 angular-webapp 上失败(真实设备上的 appium/chrome)

javascript - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'http://localhost:8100'

python - 如何在 Heroku 上使用 New Relic 记录部署

子域的 SSL 影响根域安全

eclipse - goClipse:执行准备启动时发生内部错误。原因:java.lang.NullPointerException 为什么?

javascript - 如何使用 ng-options 抑制值属性中的变量类型?

javascript - 检查图表值输入的字符串值的多个 JSON 属性