Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Go Buildpack tidak dapat mencari modul setempat. Apa yang saya hilang?

Go Buildpack tidak dapat mencari modul setempat. Apa yang saya hilang?

WBOY
WBOYke hadapan
2024-02-13 11:21:07539semak imbas

Go Buildpack 无法找到本地模块。我缺少什么?

editor php Banana menghadapi masalah semasa menggunakan Go Buildpack: "Modul tempatan tidak dapat ditemui, apa yang saya hilang?". Go Buildpack ialah alat untuk membina dan menjalankan aplikasi Go pada platform Cloud Foundry. Masalah ini biasanya disebabkan oleh kebergantungan Go yang hilang atau konfigurasi yang salah. Penyelesaian kepada masalah ini adalah untuk menyemak kebergantungan projek Go anda dan memastikan pembolehubah persekitaran seperti GOPATH dan GO111MODULE ditetapkan dengan betul.

Kandungan soalan

Saya cuba membina dan melancarkan aplikasi go di https://fly.io, tetapi semasa membina saya tidak dapat mencari pakej ujian dan templat saya seperti ini:

.
    ├── cmd
    │   ├── doc
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── git
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── imp
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── log
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── met
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── orc
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── pub
    │   │   ├── go.mod
    │   │   └── main.go
    │   ├── rep
    │   │   ├── go.mod
    │   │   └── main.go
    │   └── web
    │       ├── fly.toml
    │       ├── go.gen
    │       ├── go.mod
    │       ├── go.sum
    │       ├── handlers.go
    │       ├── handlers_test.go
    │       ├── main.go
    │       ├── main_test.go
    │       ├── router.go
    │       └── router_test.go
    ├── contributing.md
    ├── go.mod
    ├── go.work
    ├── internal
    ├── license.txt
    ├── main.go
    ├── pctl
    ├── pkg
    │   ├── **templates**
    │   │   ├── base.qtpl
    │   │   ├── base.qtpl.go
    │   │   ├── go.mod
    │   │   ├── go.sum
    │   │   ├── whoami.qtpl
    │   │   └── whoami.qtpl.go
    │   └── **test**
    │       ├── go.mod
    │       └── test.go
    └── readme.md

https://paketo.io/docs/reference/go-reference/#package-management-with-go-modules Status:

the buildpack will vendor dependencies using go modules if the app source code contains a go.mod file. during the build phase, the go-mod-vendor buildpack(opens in a new tab) checks to see if the application requires any external modules and if it does, runs the go mod vendor command for your app. the resulting vendor directory will exist in the app’s root directory and will contain all packages required for the build.

Melihat log binaan, saya mendapati bahawa go modvendor memang dijalankan.

Paketo Buildpack for Go Distribution 2.2.3
Resolving Go version
Candidate version sources (in priority order):
go.mod    -> ">= 1.19"
 -> ""
Selected Go version (using go.mod): 1.19.5
Executing build process
Installing Go 1.19.5
Completed in 35.526s
Generating SBOM for /layers/paketo-buildpacks_go-dist/go
Completed in 0s
Paketo Buildpack for Go Mod Vendor 1.0.7
Checking module graph
Running 'go mod graph'
Completed in 1.166s
Executing build process
Running 'go mod vendor'
Completed in 9.851s
Generating SBOM for /workspace/go.mod
Completed in 21ms
Paketo Buildpack for Go Build 2.0.8
Executing build process
Running 'go build -o /layers/paketo-buildpacks_go-build/targets/bin -buildmode pie -trimpath .'
Failed after 611ms
failed to execute 'go build': exit status 1
handlers.go:5:2: cannot find package "." in:
/workspace/vendor/templates
main.go:8:2: cannot find package "." in:
/workspace/vendor/test
ERROR: failed to build: exit status 1
Error failed to fetch an image or build from source: executing lifecycle: failed with status code: 51

pengendali.go:5:2: “模板” main.go:8:2: "测试"

Apa yang saya lakukan:

  1. Saya telah menukar nama modul kepada url (iaitu ujian -> some.com/test) dan menggunakan arahan ganti dalam go.mod untuk menunjuk ke modul.
  2. Saya berlari pergi modvendor dan melihat apa yang dijana...some.com ada di sana!
  3. Saya telah mencuba binaan tempatan dan jauh melalui pelancaran penerbangan. Kedua-duanya tidak akan menghasilkan fail sedemikian.

Saya sedang mencuba repositori peribadi sekarang.

Penyelesaian

Ini bukan penyelesaian yang bagus, tetapi masih boleh mengedit fail hos untuk menjadikan modul menghala ke pelayan fail tempatan.

# vim /etc/hosts
127.0.0.1    <module name>

Saya akan mengedit jawapan ini jika saya mengetahui sama ada masalahnya adalah dengan fly atau buildpack. Masalahnya ialah apabila fly runs go modvendor, ia tidak menghormati arahan penggantian dalam go.mod.

Selagi nama modul berada dalam format url, penyedia mod go yang berjalan sendiri akan menyalin semuanya dengan betul . Ia tidak semestinya URL yang sah.

Penyelesaian lain ialah dengan hanya mengehoskan kod pada url yang sah dan selesai dengannya. Saya mungkin kehilangan bendera, tetapi saya belum menemuinya lagi. Saya harap sesiapa yang menghadapi masalah ini mungkin mendapati jawapan ini membantu sementara itu.

Atas ialah kandungan terperinci Go Buildpack tidak dapat mencari modul setempat. Apa yang saya hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam