Heim >Backend-Entwicklung >Golang >Go Buildpack kann das lokale Modul nicht finden. Was vermisse ich?
php-Editor Banana ist bei der Verwendung von Go Buildpack auf ein Problem gestoßen: „Das lokale Modul kann nicht gefunden werden, was habe ich übersehen?“. Go Buildpack ist ein Tool zum Erstellen und Ausführen von Go-Anwendungen auf der Cloud Foundry-Plattform. Dieses Problem wird normalerweise durch fehlende Go-Abhängigkeiten oder eine falsche Konfiguration verursacht. Die Lösung für dieses Problem besteht darin, die Abhängigkeiten Ihres Go-Projekts zu überprüfen und sicherzustellen, dass Umgebungsvariablen wie GOPATH und GO111MODULE richtig eingestellt sind.
Ich versuche, eine Go-App auf https://fly.io zu erstellen und zu starten, aber beim Erstellen kann ich meine Test- und Vorlagenpakete wie folgt nicht finden:
. ├── 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.
Als ich mir das Build-Protokoll ansah, stellte ich fest, dass go modvendor tatsächlich ausgeführt wurde.
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
handlers.go:5:2: “模板”
main.go:8:2: "测试"
Ich versuche es jetzt mit einem privaten Repository.
Dies ist keine großartige Lösung, aber es ist trotzdem möglich, die Hosts-Datei zu bearbeiten, damit das Modul auf den lokalen Dateiserver verweist.
# vim /etc/hosts 127.0.0.1 <module name>
Ich werde diese Antwort bearbeiten, wenn ich herausfinde, ob das Problem bei Fly oder Buildpack liegt. Das Problem besteht darin, dass Fly-Läufe von go modvendor die Ersetzungsanweisungen in go.mod nicht respektieren.
Solange der Modulname im URL-Format vorliegt, kopiert der selbstlaufende Go-Mod-Anbieter alles korrekt . Es muss keine gültige URL sein.
Eine andere Lösung besteht darin, den Code einfach auf einer gültigen URL zu hosten und fertig. Wahrscheinlich fehlt mir eine Flagge, aber ich habe sie noch nicht gefunden. Ich hoffe, dass diese Antwort für jeden, der auf dieses Problem stößt, in der Zwischenzeit hilfreich sein wird.
Das obige ist der detaillierte Inhalt vonGo Buildpack kann das lokale Modul nicht finden. Was vermisse ich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!