我在部署云功能時遇到問題,因為我的一個包間接使用golang.org/x/sys使用此版本時,CF 構建通過以上任何一項似乎都失敗了# golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4但是在每次運行之后go get -u ./...我們都會獲得更新的版本并且 CF 構建失敗并出現(xiàn)錯誤2022-10-02 09:03:07.208 CESTStep #1 - "build": # cloudfunctionissue/vendor/golang.org/x/sys/unix2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall.go:83:16: undefined: unsafe.Slice2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall_linux.go:2255:9: undefined: unsafe.Slice2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall_unix.go:118:7: undefined: unsafe.Slice2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/sysvshm_unix.go:33:7: undefined: unsafe.Slice似乎這個文檔沒有為我解釋足夠的問題https://cloud.google.com/functions/docs/writing/specifying-dependencies-go#using_a_vendor_directory
2 回答

HUWWW
TA貢獻1874條經(jīng)驗 獲得超12個贊
謝謝您的回答,是的,我同意您的看法,我的問題來自較新版本的 go。但是,我們通過僅更新直接導入的包并跳過間接更新找到了解決此問題的方法。
#!/bin/sh
module=$(go list -f '{{.Module.Path}}' .)
go mod tidy
go get -d -t $(go mod graph | grep "^$module" | cut -d ' ' -f 2 | sed 's/@.*/@upgrade/g')
go mod tidy
go mod download
將此腳本應用于 dockerfile 后,我們正在毫無問題地構建我們的 CF。

肥皂起泡泡
TA貢獻1829條經(jīng)驗 獲得超6個贊
由于運行時,您收到此錯誤。unsafe.Slice是在 引入的go v1.17
,目前支持云函數(shù)v1.16
。您的代碼以某種方式調(diào)用了syscall.go:83.16和其他包。因此,您遇到了以上錯誤。嘗試還原或確定是什么在調(diào)用這些包。
- 2 回答
- 0 關注
- 778 瀏覽
添加回答
舉報
0/150
提交
取消