Bash 链码参数错误:JSON输入意外结束

Bash 链码参数错误:JSON输入意外结束,bash,hyperledger-fabric,hyperledger,Bash,Hyperledger Fabric,Hyperledger,我已经创建了一个测试网络,并且能够安装在golang中创建的链码。但在实例化时,我收到以下信息: 2020-03-24 08:00:00.843 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 04a Using default escc 2020-03-24 08:00:00.844 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 04b Using default vscc

我已经创建了一个测试网络,并且能够安装在golang中创建的链码。但在实例化时,我收到以下信息:

2020-03-24 08:00:00.843 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 04a Using default escc
2020-03-24 08:00:00.844 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 04b Using default vscc
Error: chaincode argument error: unexpected end of JSON input
如果我在它自己的目录中构建代码,它编译时不会出现问题

我可以在另一个开发网络中安装和实例化代码,但不能在我从头创建的网络中安装和实例化代码

谢谢你的帮助


谢谢

谢谢。我正在设置env变量,然后调用实例化。为安装设置了相同的变量,效果良好

export CC_CONSTRUCTOR='{ "Args" : [ "Message" , "Hello World - Init message" ] }'
export CC_NAME="testcc"
export CC_PATH="testcc"
export CC_VERSION="1.1"
export CC_CHANNEL_ID="testchannel"

peer chaincode instantiate -C $CC_CHANNEL_ID -n $CC_NAME  -v $CC_VERSION -c $CC_CONSTRUCTOR  -o $ORDERER_ADDRESS
我试着逃离一些可能需要的东西,但这不起作用。同样,golang代码和JSON构造函数在另一个测试环境中工作


如果我取消设置CC_构造函数变量,我会收到另一条错误消息,因此很可能就是问题所在。

引用
CC_构造函数时使用引号。否则,bash将内部空格优先于内部引号:

对等链码实例化-C$CC\u通道\u ID-n$CC\u名称-v$CC\u版本-C“$CC\u构造函数”-o$order\u地址

在相同的情况下,此错误由

const stateValue = await ctx.stub.getState(state); 
当状态不存在时

在其他情况下,这是因为
当读取状态时,使用
evaluateTransaction
代替
submitTransaction
,实例化命令将非常有用。输入的JSON格式似乎有问题,可能是一些需要转义或类似的字符。谢谢。请看下面的答案。这很有效,非常感谢!我仍然不明白为什么在其他环境中没有引用就可以工作…可能是shell解释器。看起来您是在容器内部运行命令,但是如果此容器运行Fabric 1.X(基于Debian)和其他Fabric 2.0(基于Alpine),它们可能会使用不同的shell解释器。谢谢,我会检查。