При развертывании gcloud не сталкивается с зависимостями поставщика

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

введите здесь описание изображения

Однако при выполнении развертывания в gcloud gcloud app deploy возникает следующая ошибка github.com/gorilla/mux не обнаружено:

ОШИБКА: (gcloud.app.deploy) Ответ об ошибке: [9] Развертывание содержит файлы, которые не могут быть скомпилированы: Ошибка компиляции: /work_dir/main.go:5:5: не удается найти импорт: "github.com/gorilla/ мультиплексор "

Что не хватает для работы развёртывания? Мой план бесплатный в 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()
}

person rafaelcb21    schedule 01.02.2019    source источник


Ответы (1)


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

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

Помимо этих проблем, связанных со сборкой, вы должны зарегистрировать мультиплексор Gorilla с помощью https://godoc.org/net/http#DefaultServeMux.

func init(){
    r := mux.NewRouter()
    r.HandleFunc("/sample", GetInfo)
    http.Handle("/", r)
}
person Cerise Limón    schedule 01.02.2019
comment
Не сработало, появляется 404 page not found. Я выполнил команду go get github.com/gorilla/mux - person rafaelcb21; 02.02.2019
comment
Что конкретно вы сделали, в результате чего страница 404 не была найдена? - person Cerise Limón; 02.02.2019
comment
Я выполнил команду go get github.com/gorilla/mux, а затем gcloud app deploy. Затем я вошел в браузер и ввел адрес http://api.testcaixa-803f4.appspot.com/sample. localhost работает ... - person rafaelcb21; 02.02.2019
comment
localhost работает, но нужна строка http.ListenAndServe(":8000", r) - person rafaelcb21; 02.02.2019
comment
См. Обновленный ответ. Используйте dev_appserver.py для локального запуска сервера. Это поможет вам обнаружить эти проблемы перед развертыванием. - person Cerise Limón; 02.02.2019