При развертывании gcloud не сталкивается с зависимостями производителя - PullRequest
0 голосов
/ 01 февраля 2019

Я создал с помощью команд govendor init и govendor fetch "github.com/gorilla/mux" каталог поставщика в проекте.

enter image description here

Однако при выполнении развертывания в gcloudgcloud 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 голосов
/ 02 февраля 2019

Если вы хотите использовать свою версию пакета mux, выпущенную для вашего поставщика, убедитесь, что файлы SAMPLE-API находятся в рабочей области Go .

Если вендинг не требуется, удалите каталог вендора, запустите go get github.com/gorilla/mux, а затем разверните приложение.В этом случае файлы вашего приложения не обязательно должны находиться в рабочей области.

Помимо этих проблем, связанных со сборкой, вы должны зарегистрировать мультиплексор Gorilla с http.DefaultServeMux .

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