тип *gin.Context не имеет поля или метода SaveUploadedFile

Мой код отлично работает на моем компьютере, но я получаю эту ошибку времени компиляции на моем сервере после того, как я переместил код на сервер Debian:

type *gin.Context has no field or method SaveUploadedFile

Я использую пример кода gin для сохранения файла:

    if err := c.SaveUploadedFile(file, file.Filename); err != nil {
        c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
        return
    }

Я обновил go до 1.8.3 на сервере (чтобы он был той же версии, что и go на моем рабочем столе) и впоследствии обновил gin, надеясь решить проблему. Но это не так.

Вот мой go env:

root@s1:~# go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/srv/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

Я также пробовал:

rm -rf $GOPATH/pkg/*

Я также пробовал go build -a, но получаю ту же ошибку.


person Karlom    schedule 21.07.2017    source источник


Ответы (1)


Кажется, ваш сервер использует старую кодовую базу джина. Только что проверил историю коммитов джина.

Метод SaveUploadedFile добавлен 5 дней назад. Поэтому выполните приведенную ниже команду, чтобы загрузить последнюю кодовую базу на свой сервер.

go get -u github.com/gin-gonic/gin

Затем скомпилируйте его.

person jeevatkm    schedule 21.07.2017
comment
Можете ли вы проверить, что файл $GOPATH/src/github.com/gin-gonic/gin/context.go на вашем сервере имеет метод SaveUploadedFile? - person jeevatkm; 21.07.2017
comment
"SaveUploadedFile" not found! Что я могу сделать сейчас? - person Karlom; 21.07.2017
comment
Это означает, что на стороне вашего сервера у вас старая кодовая база. Удалите этот каталог $GOPATH/src/github.com/gin-gonic и сделайте go get -u как в моем ответе. Затем снова проверьте файл. - person jeevatkm; 21.07.2017
comment
Ты мой мужчина! Проблема решена. Пожалуйста, уточните свой ответ, и я приму его. Спасибо! - person Karlom; 21.07.2017
comment
Пожалуйста. На самом деле решение находится в ответе, по какой-то причине команда go get не выполнила свою работу (обычно она должна работать) на вашем сервере. Я узнаю это из общения с вами. Затем я предложил вам сделать ручную очистку и получить свежую кодовую базу. - person jeevatkm; 21.07.2017
comment
Да, это странное поведение. Судя по всему, go update не очень надежен, по крайней мере, при некоторых обстоятельствах. Я запускаю go get -u github.com/gin-gonic/gin по крайней мере 3 раза, прежде чем опубликовать свой вопрос. - person Karlom; 21.07.2017