chaincode argument error: unexpected end of JSON input

chaincode argument error: unexpected end of JSON input

我已经创建了一个测试网络,我可以安装我在 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

如果我在它自己的目录中构建代码,它编译没有问题。

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

不胜感激!

谢谢!

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

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_CONSTRUCTOR 变量,我会收到另一条错误消息,因此很可能是问题所在。

引用 CC_CONSTRUCTOR 变量时使用引号。否则,bash 内部空格优先于内部引号:

peer chaincode instantiate -C $CC_CHANNEL_ID -n $CC_NAME -v $CC_VERSION -c "$CC_CONSTRUCTOR" -o $ORDERER_ADDRESS

在同样的情况下,这个错误是由

产生的
const stateValue = await ctx.stub.getState(state); 

当状态不存在时。

其他情况下,是因为 在读取状态

时,使用 evaluateTransaction 而不是 submitTransaction