我正在尝试构建和运行一个仓库(https://github.com/hyperledger/fabric/tree/master),但此错误不断弹出,但仍然没有找到解决方案。
consensus.go:12:2: use of internal package github.com/hyperledger/fabric/internal/pkg/identity not allowed
这只是出现此错误的许多文件之一。我很确定自己做错了,因为此仓库正在运行。
Go版本:
go version go1.13.5 linux/amd64
OS:Linux Mint 19.2肉桂
[Internal packages(位于路径中具有internal
文件夹的文件夹内的软件包)只能从植根于internal
文件夹父文件夹的软件包中导入。
例如包pkg/foo/internal/bar
既可以由包pkg/foo/internal/baz
导入,也可以从pkg/foo/baz
导入,但不能由包pkg
导入,也不能由pkg/bar
导入。这是设计使然。这是如此之大,可以将复杂的程序包分解为更小的程序包,而无需暴露内部结构。
您必须将内部软件包视为“私有”软件包,或者将其从“外部”视为不存在。
查看相关内容:Can I develop a go package in multiple source directories?
在Command go: Internal Directories处了解有关内部软件包的更多信息。
内部软件包是编译器的限制。如果要在自己的项目中公开它们(如果要使用内部软件包),则必须删除internal
文件夹,然后当然也必须更改导入(导入路径)。