gcloud 函数部署 go 运行时错误“未定义:unsafe.Slice;错误 ID:2f5e35a0”

Pur*_*uru 3 go slice gcloud google-cloud-functions google-cloud-build

在部署到谷歌云功能时,我收到此错误:

ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: # projectname/vendor/golang.org/x/sys/unix
src/projectname/vendor/golang.org/x/sys/unix/syscall.go:83:16: undefined: unsafe.Slice
src/projectname/vendor/golang.org/x/sys/unix/syscall_linux.go:2255:9: undefined: unsafe.Slice
src/projectname/vendor/golang.org/x/sys/unix/syscall_unix.go:118:7: undefined: unsafe.Slice
src/projectname/vendor/golang.org/x/sys/unix/sysvshm_unix.go:33:7: undefined: unsafe.Slice; Error ID: 2f5e35a0
Run Code Online (Sandbox Code Playgroud)

这是我的命令:

gcloud functions deploy servicename --region=us-central1 --entry-point=gofunctionname --runtime=go116 --source=.
Run Code Online (Sandbox Code Playgroud)

我正在使用供应商来打包我的依赖项。好久没更新这个功能了。我第一次注意到这个错误。

任何帮助将非常感激。

Pur*_*uru 13

正如 DazWilkin 上面建议的那样,unsafe.Slice它已作为 Go 1.17 的一部分添加,并且 GCP 函数目前支持 Go 1.16。

我必须恢复文件golang.org/x/sys中的模块go.mod,它对我有用。

golang.org/x/sys v0.0.0-20221010170243-090e33056c14 // indirect
Run Code Online (Sandbox Code Playgroud)

golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect
Run Code Online (Sandbox Code Playgroud)

通过此更改,我能够构建代码并将其部署到 Google Cloud Functions。

  • 在项目根目录运行此命令应该更容易。`go mod edit -go='1.16' -replace='golang.org/x/sys'='golang.org/x/sys@v0.0.0-20220811171246-fbc7d0a398ab'` (4认同)