在部署中,gcloud没有遇到供应商依赖性

时间:2019-02-01 19:28:10

标签: go gcloud vendor

我通过命令govendor initgovendor fetch "github.com/gorilla/mux"在项目中的供应商目录中创建。

enter image description here

但是,在gcloud gcloud app deploy中执行部署时,发生以下错误,找不到github.com/gorilla/mux

  

错误:(gcloud.app.deploy)错误响应:[9]部署包含无法编译的文件:编译失败:   /work_dir/main.go:5:5:找不到导入:“ 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()
}

1 个答案:

答案 0 :(得分:2)

如果要使用mux软件包的供应商版本,请确保SAMPLE-API文件位于Go workspace中。

如果不需要供应商,请删除供应商目录,运行go get github.com/gorilla/mux,然后部署您的应用程序。在这种情况下,您的应用程序文件不需要在工作区中。

除了这些与构建相关的问题外,您还必须向http.DefaultServeMux注册Gorilla mux。

func init(){
    r := mux.NewRouter()
    r.HandleFunc("/sample", GetInfo)
    http.Handle("/", r)
}