不允许使用内部软件包

问题描述 投票:0回答:1

我正在尝试构建和运行一个仓库(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肉桂

go go-build
1个回答
3
投票

[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文件夹,然后当然也必须更改导入(导入路径)。

© www.soinside.com 2019 - 2024. All rights reserved.