hyperledger fabric make error:" goimports:command not found"

时间:2017-04-17 02:40:55

标签: hyperledger hyperledger-fabric

当我构建hyperledger结构项目时,我有以下错误。但是我已经成功安装了goimports。为了找到原因,我单独运行./scripts/golinter.sh,并且没有这样的错误。当我制作整个结构项目时,错误原因是什么。

  

LINT:运行代码检查..检查./accesscontrol   ./scripts/golinter.sh:line 23:goimports:找不到命令   Makefile:148:目标' linter'失败了:*** [linter]   错误127

enter image description here

5 个答案:

答案 0 :(得分:1)

直接运行./scripts/golinter.sh时,您在本地系统上运行它,因此它会找到您本地安装的goimports实用程序。

当您运行make(或更具体地说,make linter)时,golinter.sh脚本会根据hyperledger/fabric-buildenv图像在容器内运行。必定存在一些不匹配,因此我建议您删除标有hyperledger/fabric-buildenv的所有图像痕迹并运行make buildenv以创建新图像。更好的是make clean后跟make,因为还有其他图片构建在hyperledger/fabric-buildenv之上。

答案 1 :(得分:1)

goimports更新您的Go导入行,添加缺少的行并删除未引用的行。它是用户需要

的工具
go get golang.org/x/tools/cmd/goimports 

Reference

答案 2 :(得分:0)

在Makefile中

$query->bindParam(2, $x, PDO::PARAM_INT);

所以你可以找到你用来做这项工作的码头图像。 它应该是这样的:

linter: buildenv
@echo "LINT: Running code checks.."
#add this
@echo "$(DOCKER_TAG)"
@$(DRUN) $(DOCKER_NS)/fabric-buildenv:$(DOCKER_TAG) ./scripts/golinter.sh

你可以运行它:

hyperledger/fabric-buildenv    x86_64-1.1.1-snapshot-cd36699   29266298cc73        3 minutes ago       1.43GB

将容器提交到容器外

docker run -it 29266298cc73
#install the cmd in it
$go get golang.org/x/tools/cmd/goimports

现在你可以再次运行make了,现在应该可以了。

无论如何,它是release1.1的错误

答案 3 :(得分:0)

在Mac上,我可以通过在路径($HOME/go/bin)中加入~/.bashrc来完成这项工作。似乎是在文档中打开的,我错过了一些

答案 4 :(得分:-1)

  1. 将goimports复制到目录fabric/build/image/buildenv/payload
  2. 修改images/buildenv/Dockerfile.in并向其添加COPY payload/goimports usr/local/bin/
  3. 您可以阅读Makefile并了解背景信息。