⛳
GoのCloudFunctionsデプロイ時のエラー
GoのCloudFunctionsデプロイ時のエラー
GoogleCloudのCloudFunctionsについてです。
デプロイすると、このようなエラーが出ます。
log
status: {
code: 3
message: "Build failed: functions.local/app/main.go:18:2: import "example.com/myproject" is a program, not an importable package; Error ID: ...."
}
main.go
package main
import (
...
)
func MyHandler(w http.ResponseWriter, r *http.Request) {
...
go.mod
module example.com/myproject
go 1.20
require (
...
)
解決
main.goのパッケージ名を修正します。
main.go
package p
するとどうでしょう、成功するではありませんか!
パッケージ名をmainにした時だけデプロイに失敗します。
↓ChatGPTより
Cloud Functionsのデプロイには、Goの特定のビルドモードが必要です。Goのビルドモードには、exe
、c-shared
、**shared
の3つのモードがあります。Cloud Functionsのデプロイには、exe
モードを使用する必要があります。c-shared
およびshared
**モードは、Cloud Functionsでサポートされていません。
Goのビルドモードは、Goのビルドツールである**go build
コマンドの引数によって指定されます。Goの標準ビルドモードはexe
モードであり、go build
コマンドを実行する場合には、引数を指定しなくても自動的にexe
**モードが選択されます。
しかし、**main
パッケージを含むGoのプログラムをビルドする場合、go build
コマンドに-buildmode=exe
の引数を指定する必要があります。この引数を指定しない場合、c-shared
モードが自動的に選択されます。c-shared
**モードでは、共有ライブラリをビルドするためのオプションが有効になりますが、Cloud Functionsは共有ライブラリをサポートしていません。
ということらしいです。
これは間違い無いだろう、と決めつけて視野を狭めてしまうのはよく無いと改めて思いました。
Discussion