登录
首页 >  Golang >  Go问答

golang 云函数构建中的 golang.org/x/sys/unix 包问题与间接 require 有关

来源:stackoverflow

时间:2024-02-12 22:09:22 436浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《golang 云函数构建中的 golang.org/x/sys/unix 包问题与间接 require 有关》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我在部署云函数时遇到问题,因为我的一个包间接使用了 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-dependency-go#using_a_vendor_directory


正确答案


感谢您的回答,是的,我同意您的观点,我的问题是由较新版本的 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,没有出现任何问题。

您因运行时而收到此错误。 unsafe.Slice 是在 go v1.17 中引入的,但目前是 cloud functions support v1.16。不知何故,您的代码调用了 syscall.go:83.16 和其他包。因此,您会遇到上述错误。尝试恢复或确定是什么在调用这些包。

今天关于《golang 云函数构建中的 golang.org/x/sys/unix 包问题与间接 require 有关》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>