在部署 gcloud 时没有遇到供应商依赖项
In deploy gcloud is not encountering the vendor dependencies
我通过命令 govendor init
和 govendor fetch "github.com/gorilla/mux"
创建了项目中的 vendor 目录。
但是,在 gcloud gcloud app deploy
中执行部署时出现以下错误,未找到 github.com/gorilla/mux
:
ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed:
/work_dir/main.go:5:5: can't find import: "github.com/gorilla/mux"
部署工作缺少什么?我的计划在 gcloud
中是免费的
app.yaml
service: api
runtime: go
api_version: go1
handlers:
- url: /sample
script: _go_app
main.go
package main
import (
"encoding/json"
"github.com/gorilla/mux"
"net/http"
"google.golang.org/appengine"
)
type Foo struct {
Text string `json:"text"`
}
func GetInfo(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(Foo{"hello"})
}
func init(){
r := mux.NewRouter()
r.HandleFunc("/sample", GetInfo)
}
func main() {
appengine.Main()
}
如果您想使用您销售的 mux 包版本,请确保 SAMPLE-API 文件位于 Go workspace 中。
如果不需要 vendoring,则删除 vendor 目录,运行 go get github.com/gorilla/mux
然后部署您的应用程序。在这种情况下,您的应用程序文件不需要位于工作空间中。
除了这些与构建相关的问题之外,您还必须使用 http.DefaultServeMux 注册 Gorilla mux。
func init(){
r := mux.NewRouter()
r.HandleFunc("/sample", GetInfo)
http.Handle("/", r)
}
我通过命令 govendor init
和 govendor fetch "github.com/gorilla/mux"
创建了项目中的 vendor 目录。
但是,在 gcloud gcloud app deploy
中执行部署时出现以下错误,未找到 github.com/gorilla/mux
:
ERROR: (gcloud.app.deploy) Error Response: [9] Deployment contains files that cannot be compiled: Compile failed: /work_dir/main.go:5:5: can't find import: "github.com/gorilla/mux"
部署工作缺少什么?我的计划在 gcloud
中是免费的app.yaml
service: api
runtime: go
api_version: go1
handlers:
- url: /sample
script: _go_app
main.go
package main
import (
"encoding/json"
"github.com/gorilla/mux"
"net/http"
"google.golang.org/appengine"
)
type Foo struct {
Text string `json:"text"`
}
func GetInfo(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(Foo{"hello"})
}
func init(){
r := mux.NewRouter()
r.HandleFunc("/sample", GetInfo)
}
func main() {
appengine.Main()
}
如果您想使用您销售的 mux 包版本,请确保 SAMPLE-API 文件位于 Go workspace 中。
如果不需要 vendoring,则删除 vendor 目录,运行 go get github.com/gorilla/mux
然后部署您的应用程序。在这种情况下,您的应用程序文件不需要位于工作空间中。
除了这些与构建相关的问题之外,您还必须使用 http.DefaultServeMux 注册 Gorilla mux。
func init(){
r := mux.NewRouter()
r.HandleFunc("/sample", GetInfo)
http.Handle("/", r)
}