golang 间接要求导致包 golang.org/x/sys/unix 的云函数构建出现问题

我在部署云功能时遇到问题,因为我的一个包间接使用golang.org/x/sys


使用此版本时,CF 构建通过以上任何一项似乎都失败了


# golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4

但是在每次运行之后go get -u ./...我们都会获得更新的版本并且 CF 构建失败并出现错误


2022-10-02 09:03:07.208 CESTStep #1 - "build": # cloudfunctionissue/vendor/golang.org/x/sys/unix

2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall.go:83:16: undefined: unsafe.Slice

2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall_linux.go:2255:9: undefined: unsafe.Slice

2022-10-02 09:03:07.208 CESTStep #1 - "build": src/cloudfunctionissue/vendor/golang.org/x/sys/unix/syscall_unix.go:118:7: undefined: unsafe.Slice

2022-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


眼眸繁星
浏览 730回答 2
2回答

HUWWW

谢谢您的回答,是的,我同意您的看法,我的问题来自较新版本的 go。但是,我们通过仅更新直接导入的包并跳过间接更新找到了解决此问题的方法。#!/bin/sh  module=$(go list -f '{{.Module.Path}}' .)go mod tidygo get -d -t $(go mod graph | grep "^$module" | cut -d ' ' -f 2 | sed 's/@.*/@upgrade/g')go mod tidygo mod download将此脚本应用于 dockerfile 后,我们正在毫无问题地构建我们的 CF。

肥皂起泡泡

由于运行时,您收到此错误。unsafe.Slice是在 引入的go v1.17,目前支持云函数v1.16。您的代码以某种方式调用了syscall.go:83.16和其他包。因此,您遇到了以上错误。尝试还原或确定是什么在调用这些包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go