Go: x/tools/cmd/stringer: tidak dapat mengimpor dependensi vendor

Dibuat pada 10 Agu 2017  ·  3Komentar  ·  Sumber: golang/go

Harap jawab pertanyaan ini sebelum mengirimkan masalah Anda. Terima kasih!

Versi Go apa yang Anda gunakan ( go version )?

go versi go1.8.3 linux/amd64

Sistem operasi dan arsitektur prosesor apa yang Anda gunakan ( go env )?

Ubuntu Linux, amd64

Apa yang kamu lakukan?

Mencoba menjalankan golang.org/x/tools/cmd/stringer pada paket yang mengimpor dependensi vendor

Apa yang Anda harapkan untuk dilihat?

Alat bekerja seperti yang diharapkan

Apa yang Anda lihat sebagai gantinya?

Sementara 'go build' dan semua alat lain tampak baik-baik saja dengan ketergantungan yang dijajakan di $GOPATH/src/vendor, stringer gagal dengan kesalahan impor:

$ go build plinth/auth
$ go get golang.org/x/tools/cmd/stringer
$ go generate plinth/auth
stringer: checking package: auth.go:8:2: could not import golang.org/x/net/context (can't find import: vendor/golang.org/x/net/context)
src/plinth/auth/auth.go:37: running "stringer": exit status 1
$ stringer -type Role $GOPATH/src/plinth/auth
stringer: checking package: [...]/src/plinth/auth/auth.go:8:2: could not import golang.org/x/net/context (can't find import: vendor/golang.org/x/net/context)
$ ls $GOPATH/src/vendor/golang.org/x/net/context
context.go  context_test.go  ctxhttp  go17.go  go19.go  pre_go17.go  pre_go19.go  withtimeout_test.go
Tools

Komentar yang paling membantu

@ChimeraCoder Saya membuka kunci #10249.

Semua 3 komentar

Kami juga mengalami masalah ini. Itu hanya bermanifestasi di bawah Go 1.8, seperti yang dapat dilihat di sini: https://travis-ci.org/stripe/veneur/builds/278659663. Ini dapat direproduksi secara lokal dengan mengubah Dockerfile dalam permintaan tarik yang sesuai untuk menggunakan Go 1.8 alih-alih Go 1.9. Itu terjadi bahkan jika paket yang tidak dapat ditemukan (dalam hal ini, github.com/gogo/protobuf/proto ) diinstal dengan go install .

Pengimpor stringer menggunakan pengimpor Go default untuk 1.8, tetapi tidak untuk 1.9 .

Menjalankan go install dalam proyek saat ini (bukan pada paket yang tidak dapat diimpor, tetapi pada paket yang mengimpor vendor) sebelum menjalankan Stringer memperbaiki masalah.

Saya mencoba mencoba memperbaikinya di stringer , meskipun saya tidak yakin mengapa perilaku go/importer itu sendiri berubah antara 1,8 dan 1,9 dengan cara ini. Bisakah seseorang mengarahkan saya ke arah yang benar di sini?

Masalah ini telah diperbaiki di Go 1.10, tetapi diperkenalkan kembali baru-baru ini. Saya cukup yakin komit yang memperkenalkannya adalah https://github.com/golang/tools/commit/ffe88906718454e356e61776b54256e873fc133b , yang mengembalikan CL 40403.

Komit dikembalikan untuk menyelesaikan https://github.com/golang/go/issues/25650 , meskipun itu memperkenalkan kembali https://github.com/golang/go/issues/10249 , yang terkait.

Saya tidak dapat mengomentari masalah itu karena awalnya dikunci karena usia - dibuka kembali dua hari yang lalu, tetapi masih terbatas pada kolaborator.

@ChimeraCoder Saya membuka kunci #10249.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat