Невозможно развернуть приложение AppEngine Go со средой выполнения 1.12, использующей внешние библиотеки - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь перенести старый проект Google App Engine (стандартная среда), написанный на Go, во время выполнения 1.12.Я не касался этого с конца 2017 года, и с тех пор многое изменилось.Мне удалось разобраться с некоторыми вещами, но я не могу развернуть код, поскольку у меня есть некоторые внешние зависимости.

Соответствующие части вывода консоли при попытке развернуть

d:\src\go\src\data-axe>go env GOPATH
d:\src\go

d:\src\go\src\data-axe>gcloud app deploy --no-promote
...
Error type: BuildError.
Error message: 2019/09/27 19:10:09 Your app is not on your GOPATH, this build may fail.
2019/09/27 19:10:10 Building from Go source in /tmp/staging/srv, with main package at ./...
2019/09/27 19:10:10 Building /tmp/staging/srv, saving to /tmp/staging/usr/local/bin/start
2019/09/27 19:10:11 Wrote build output to /builder/outputs/output
2019/09/27 19:10:11 Failed to build app: Your app is not on your GOPATH, please move it there and try again.
...
 err=exit status 1, out=srv/main.go:6:2: cannot find package "github.com/microcosm-cc/bluemonday" in any of:
...

Как видно из фрагмента выше, моя GOPATH установлена ​​на d:\src\go, мое приложение в d:\src\go\src\data-axe, а Bluemonday, который я использую, находится в d:\src\go\src\github.com\microcosm-cc\bluemonday, так что, насколько я знаю, все это в моей GOPATH.

Документация App Engine для указания зависимостей скажем

Если ваше приложение находится в каталоге на вашей GOPATH, App Engine анализирует, копирует и загружает ваши импортные файлы из GOPATH,Этот подход поддерживает каталоги поставщиков.

Здесь должно быть что-то, чего я не понимаю.У меня есть и мой код, и библиотека, которую я использую в своей GOPATH, но App Engine, похоже, не получает и не загружает мой импорт при попытке развернуть.

Импорт в моем main.go используетабсолютный путь, как сказано в документации:

package main

import (
    "fmt"
    "net/http"
    "github.com/microcosm-cc/bluemonday"
    "strings"
    "log"
    "os"
)

Что я делаю не так?


Редактировать

Полный вывод go env:

d:\src\go\src\data-axe>go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\niklas\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=d:\src\go
set GOPROXY=
set GORACE=
set GOROOT=c:\go
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\niklas\AppData\Local\Temp\go-build168636674=/tmp/go-build -gno-record-gcc-switches

1 Ответ

0 голосов
/ 28 сентября 2019

Мне удалось решить эту проблему двумя различными способами.

Первым было скопировать мой проект за пределы моего $ GOPATH и включить модули go, как описано в этом простом руководстве .Когда я сделал это, я смог успешно развернуть свое приложение, включая все его зависимости.

Мне также удалось решить проблему без модулей go.Оказалось, что это был не только мой проект, который не был затронут в течение очень долгого времени.Мой Google Cloud SDK также сильно устарел.После того, как я обновил его до gcloud components update, я смог нормально развернуть свое приложение без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...