/x/sys@v0.4.0/unix/syscall.go:83:16: undefined: unsafe.Slice
golang 版本低于 1.17 时,go build
时报错
# golang.org/x/sys/unix
../../../go/pkg/mod/golang.org/x/sys@v0.4.0/unix/syscall.go:83:16: undefined: unsafe.Slice
解决否
已解决
方案
在项目 运行
$ go mod graph | gmchart
gmchart 是一个将依赖可视化展示的工具——https://github.com/PaulXu-cn/go-mod-graph-chart, 安装后通过命令
gmchart
调用。
这里发现了2次引用 golang.org/x/sys
, 但是发现在第二级,看不出谁引用了它,别急,我们点击找个点,展开看下。
展开后,发现有三个项目引用了它,这三个项目我在项目中都没有用到呢,那就至于猜了,这里最可疑的就是 grpc-example
,那就是 grpc, 估计是高版的grpc依赖了高版本 API
。
检查项目内 go.mod
go 1.14
require (
google.golang.org/grpc v1.52.0
)
发现项目内引用的 grpc
版本时 v1.52.0
, 打开grpc项目发现,该项目已机遇 go1.17
构建。所以,这里我们需要降低 grpc
的版本
我们要找个 go 1.14
的,那,grpc v1.48.0
就满足 go v1.14 runtime
需求。
所以,回到项目将go.mod 调整如下
go 1.14
require (
google.golang.org/grpc v1.48.0
)
然后更新加依赖,项目就能构建了。