Go:了解伪造项目中“不允许使用内部包”错误
在使用 Go 时,开发者可能会遇到错误注明“不允许使用内部包装”。当尝试在从另一个存储库分叉的项目中运行测试时,会发生此错误。
在提到的特定实例中,运行命令“go test”时会出现错误。在分叉的“zoonoo/go-ethereum”存储库的“eth”目录中。此错误源于文件“eth/api.go”的第 37 行,该文件导入内部包“github.com/ethereum/go-ethereum/internal/ethapi。”
解决错误
要理解错误,掌握 Go 包系统的细微差别很重要。 Go 包由其存储库和路径标识。当分叉一个存储库时,分叉版本作为具有不同路径的单独实体存在,同时保持相同的存储库名称。
这意味着当尝试在分叉项目中运行测试时,Go 会尝试根据项目的当前路径,与原始存储库的路径不同。结果,Go 抛出“不允许使用内部包”错误,因为内部包特定于原始存储库,无法从分叉版本导入。
锻造与修改项目
要解决此错误,区分分叉和修改项目至关重要。分叉会创建原始存储库的副本,同时向您的版本添加更改。但是,这些更改不会影响原始存储库。另一方面,修改项目会更改原始存储库本身。
解决方案
要在伪造的 Go 项目中运行测试,开发人员需要修改导入路径在代码中匹配分叉存储库。这涉及到在导入语句中将原始存储库 URL 替换为分叉存储库 URL。通过这样做,Go 可以正确解决依赖关系并避免错误。
值得注意的是,在使用分叉存储库时,建议保持与原始存储库相同的包结构。这确保了与原始项目的设计和代码依赖项的兼容性。
以上是为什么伪造的Go项目会出现'不允许使用内部包”的情况?的详细内容。更多信息请关注PHP中文网其他相关文章!