Hyperledger fabric Hyperledger结构中的链码实例化失败

Hyperledger fabric Hyperledger结构中的链码实例化失败,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,问题: 我已经为我的网络创建了Hyperledger结构网络和自定义链码。运行网络后,我在网络上安装链码。这对所有同行来说都是成功的。但是,当我尝试实例化链码时,它在cli上给了我这个错误 错误:无法组装事务,错误建议响应不正确 成功,错误代码500,消息链码注册失败: 容器以1退出 但所有其他链码,包括fabcar和我编写的一个链码,都被成功实例化了。但只有这个链码失败了 这是该链码的package.json { "name": "helthcare", "version": "1.3

问题:

我已经为我的网络创建了Hyperledger结构网络和自定义链码。运行网络后,我在网络上安装链码。这对所有同行来说都是成功的。但是,当我尝试实例化链码时,它在cli上给了我这个错误

错误:无法组装事务,错误建议响应不正确 成功,错误代码500,消息链码注册失败: 容器以1退出

但所有其他链码,包括fabcar和我编写的一个链码,都被成功实例化了。但只有这个链码失败了

这是该链码的package.json

{
  "name": "helthcare",
  "version": "1.3.0",
  "description": "Chain code for HRM",
  "engines": {
    "node": ">=8.4.0",
    "npm": ">=6.4.0"
  },
  "scripts": {
    "start": "node helthcare.js"
  },
  "engine-strict": true,
  "author": "Janith Shanilka",
  "license": "Apache-2.0",
  "dependencies": {
    "fabric-shim": "~1.4.0"
  }
}
"use strict";
const shim = require("fabric-shim");
const util = require("util");

let Chaincode = class {
  async Init(stub) {
    //this method is to Initialized the chincode on the channel
    console.info("=========== Instantiated HRM chaincode ===========");
    return shim.success();
  }

  async Invoke(stub) {
    let ret = stub.getFunctionAndParameters();
    console.info(ret);

    let method = this[ret.fcn];
    if (!method) {
      console.error("no function of name:" + ret.fcn + " found");
      throw new Error("Received unknown function " + ret.fcn + " invocation");
    }
    try {
      let payload = await method(stub, ret.params);
      return shim.success(payload);
    } catch (err) {
      console.log(err);
      return shim.error(err);
    }
  }


  async patientRegistration(stub, args) {
    console.info("============= START : Registering a Patient ===========");
    if (args.length != 22) {
      throw new Error(
        `Incorrect number of arguments. Expecting 22 got ${args.length}`
      );
    }

    let patientAsBytes = await stub.getState(args[0]); //get the particular patient from the ledger
    //console.log("hiiiii" + driverAsBytes.toString());
    if (patientAsBytes.toString()) {
      //check weather he is already registered or not
      console.log(patientAsBytes.toString());
      throw new Error("patient with ID" + args[0] + " Already registered");
    }

    var patient = {
      docType: "patient",
      title: args[0],
      firstName: args[1],
      middlename: args[2],
      surname: args[3],
      dob: args[4],
      sex: args[5],
      bloodtype: args[6],
      height: [7],
      weight: [8],
      allergy: [9],
      addressline1: args[10],
      addressline2: args[11],
      city: args[12],
      postalcode: args[13],
      email: args[14],
      contactno: args[15],
      etitle: args[16],
      efirstName: args[17],
      esurname: args[18],
      contactno1: args[19],
      contactno2: args[20],
      erelationship: args[21]
    };

    await stub.putState(patient.email, Buffer.from(JSON.stringify(patient))); //add new patient to ledger
    console.info("============= END : Registering a patient ===========");
  }

  async addDoctor(stub, args) {
    console.info("============= START : Registering a doctor ===========");
    if (args.length != 12) {
      throw new Error(
        `Incorrect number of arguments. Expecting 12 got ${args.length}`
      );
    }

    let doctorAsBytes = await stub.getState(args[0]); //get the particular doctor from ledger
    if (doctorAsBytes.toString()) {
      console.log(doctorAsBytes.toString());
      //check weather he is already registered or not
      throw new Error("doctor with RegNo" + args[0] + " Already registered");
    }

    var doctor = {
      docType: "doctor",
      title: args[0],
      firstName: args[1],
      surname: args[2],
      medicalregno: args[3],
      dob: args[4],
      sex: args[5],
      speciality: args[6],
      addressline1: args[7],
      addressline2: args[8],
      city: args[8],
      postalcode: args[9],
      email: args[10],
      contactno: args[11],
    };

    await stub.putState(doctor.email, Buffer.from(JSON.stringify(doctor))); //add new doctor to the ledger
    console.info("============= END : Registering a doctor ===========");
  }


  async makeDiagnosis(stub, args) {
    console.info("============ START : Make a Diagnosis ==========");
    if (args.length != 6) {
      throw new Error(
        `Incorrect number of arguments. Expecting 6 got ${args.length}`
      );
    }

    var diagnosis = {
      docType: "diagnosis",
      id: args[0],
      patientid : args[1],
      doctorid : args[2],
      sysdate : args[3],
      systime : args[4],
      diagnosis: args[5]
    };

    await stub.putState(diagnosis.id, Buffer.from(JSON.stringify(diagnosis))); //put the new fine into leadger

    console.info("============ END: Make a Diagnosis ==========");
  }


  async selectNthDoctor(stub, args) {
    console.info("============= START : Selecting a doctor ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting regNo ex: doctorhrm@gmail.com"
      );
    }
    let email = args[0];

    let doctorAsBytes = await stub.getState(email); //get the officer from state
    if (!doctorAsBytes.toString() || doctorAsBytes.toString().length <= 0) {
      throw new Error("Officer with Email" + email + " does not exist");
    }
    console.log(doctorAsBytes.toString());
    console.info("============= END : Selecting a doctor ===========");
    return doctorAsBytes;
  }

  async selectNthPatient(stub, args) {
    console.info("============= START : Selecting a patient ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting patient Id ex: patienthrm@gmail.com"
      );
    }
    let email = args[0];

    let patientAsBytes = await stub.getState(email); //get the offence from ledger
    if (!patientAsBytes.toString() || patientAsBytes.toString().length <= 0) {
      throw new Error("Offence with Email" + email + " does not exist");
    }
    console.log(patientAsBytes.toString());
    console.info("============= END : Selecting a doctor ===========");
    return patientAsBytes;
  }


  async selectNthDiagnosis(stub, args) {
    console.info("============= START : Selecting a diagnosis ===========");
    if (args.length != 1) {
      throw new Error("Incorrect number of arguments. Expecting ID ex: D001");
    }
    let dId = args[0];

    let diagnosisAsBytes = await stub.getState(dId); //select payment from ledger
    if (!diagnosisAsBytes.toString() || diagnosisAsBytes.toString().length <= 0) {
      throw new Error("Payment with dId" + dId + " does not exist");
    }
    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Selecting a diagnosis ===========");
    return diagnosisAsBytes;
  }

  async nthDocotorDiagnosis(stub, args) {
    console.info("============= START : Mango Query Slecting all diagonsis of Doctors ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting Email ex: doctorhrm@gmail.com"
      );
    }

    let email = args[0];

    let query = {
      "selector": {
        "docType": "diagnosis",
        "doctorid": email
      }
    };

    let diagnosisAsBytes = await stub.getQueryResult(JSON.stringify(query));

    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Mango Query Slecting all diagonsis of Doctors ===========");
    return diagnosisAsBytes;

  }

  async nthPatientDiagnosis(stub, args) {
    console.info("============= START : Mango Query Slecting all diagonsis of Patient ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting email ex: patienthrm@gmail.com"
      );
    }

    let email = args[0];

    let diagnosisAsBytes = await stub.getQueryResult({
      selector: {
        docType: "diagnosis",
        patientid: email
      }
    });

    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Mango Query Slecting all diagonsis of Doctors ===========");
    return diagnosisAsBytes;
  }

  async getAllDoctors(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "doctor";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

  async getAllPatient(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "patient";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

  async getAllDiagnosis(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "diagnosis";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

};

shim.start(new Chaincode());
这是我的密码

{
  "name": "helthcare",
  "version": "1.3.0",
  "description": "Chain code for HRM",
  "engines": {
    "node": ">=8.4.0",
    "npm": ">=6.4.0"
  },
  "scripts": {
    "start": "node helthcare.js"
  },
  "engine-strict": true,
  "author": "Janith Shanilka",
  "license": "Apache-2.0",
  "dependencies": {
    "fabric-shim": "~1.4.0"
  }
}
"use strict";
const shim = require("fabric-shim");
const util = require("util");

let Chaincode = class {
  async Init(stub) {
    //this method is to Initialized the chincode on the channel
    console.info("=========== Instantiated HRM chaincode ===========");
    return shim.success();
  }

  async Invoke(stub) {
    let ret = stub.getFunctionAndParameters();
    console.info(ret);

    let method = this[ret.fcn];
    if (!method) {
      console.error("no function of name:" + ret.fcn + " found");
      throw new Error("Received unknown function " + ret.fcn + " invocation");
    }
    try {
      let payload = await method(stub, ret.params);
      return shim.success(payload);
    } catch (err) {
      console.log(err);
      return shim.error(err);
    }
  }


  async patientRegistration(stub, args) {
    console.info("============= START : Registering a Patient ===========");
    if (args.length != 22) {
      throw new Error(
        `Incorrect number of arguments. Expecting 22 got ${args.length}`
      );
    }

    let patientAsBytes = await stub.getState(args[0]); //get the particular patient from the ledger
    //console.log("hiiiii" + driverAsBytes.toString());
    if (patientAsBytes.toString()) {
      //check weather he is already registered or not
      console.log(patientAsBytes.toString());
      throw new Error("patient with ID" + args[0] + " Already registered");
    }

    var patient = {
      docType: "patient",
      title: args[0],
      firstName: args[1],
      middlename: args[2],
      surname: args[3],
      dob: args[4],
      sex: args[5],
      bloodtype: args[6],
      height: [7],
      weight: [8],
      allergy: [9],
      addressline1: args[10],
      addressline2: args[11],
      city: args[12],
      postalcode: args[13],
      email: args[14],
      contactno: args[15],
      etitle: args[16],
      efirstName: args[17],
      esurname: args[18],
      contactno1: args[19],
      contactno2: args[20],
      erelationship: args[21]
    };

    await stub.putState(patient.email, Buffer.from(JSON.stringify(patient))); //add new patient to ledger
    console.info("============= END : Registering a patient ===========");
  }

  async addDoctor(stub, args) {
    console.info("============= START : Registering a doctor ===========");
    if (args.length != 12) {
      throw new Error(
        `Incorrect number of arguments. Expecting 12 got ${args.length}`
      );
    }

    let doctorAsBytes = await stub.getState(args[0]); //get the particular doctor from ledger
    if (doctorAsBytes.toString()) {
      console.log(doctorAsBytes.toString());
      //check weather he is already registered or not
      throw new Error("doctor with RegNo" + args[0] + " Already registered");
    }

    var doctor = {
      docType: "doctor",
      title: args[0],
      firstName: args[1],
      surname: args[2],
      medicalregno: args[3],
      dob: args[4],
      sex: args[5],
      speciality: args[6],
      addressline1: args[7],
      addressline2: args[8],
      city: args[8],
      postalcode: args[9],
      email: args[10],
      contactno: args[11],
    };

    await stub.putState(doctor.email, Buffer.from(JSON.stringify(doctor))); //add new doctor to the ledger
    console.info("============= END : Registering a doctor ===========");
  }


  async makeDiagnosis(stub, args) {
    console.info("============ START : Make a Diagnosis ==========");
    if (args.length != 6) {
      throw new Error(
        `Incorrect number of arguments. Expecting 6 got ${args.length}`
      );
    }

    var diagnosis = {
      docType: "diagnosis",
      id: args[0],
      patientid : args[1],
      doctorid : args[2],
      sysdate : args[3],
      systime : args[4],
      diagnosis: args[5]
    };

    await stub.putState(diagnosis.id, Buffer.from(JSON.stringify(diagnosis))); //put the new fine into leadger

    console.info("============ END: Make a Diagnosis ==========");
  }


  async selectNthDoctor(stub, args) {
    console.info("============= START : Selecting a doctor ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting regNo ex: doctorhrm@gmail.com"
      );
    }
    let email = args[0];

    let doctorAsBytes = await stub.getState(email); //get the officer from state
    if (!doctorAsBytes.toString() || doctorAsBytes.toString().length <= 0) {
      throw new Error("Officer with Email" + email + " does not exist");
    }
    console.log(doctorAsBytes.toString());
    console.info("============= END : Selecting a doctor ===========");
    return doctorAsBytes;
  }

  async selectNthPatient(stub, args) {
    console.info("============= START : Selecting a patient ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting patient Id ex: patienthrm@gmail.com"
      );
    }
    let email = args[0];

    let patientAsBytes = await stub.getState(email); //get the offence from ledger
    if (!patientAsBytes.toString() || patientAsBytes.toString().length <= 0) {
      throw new Error("Offence with Email" + email + " does not exist");
    }
    console.log(patientAsBytes.toString());
    console.info("============= END : Selecting a doctor ===========");
    return patientAsBytes;
  }


  async selectNthDiagnosis(stub, args) {
    console.info("============= START : Selecting a diagnosis ===========");
    if (args.length != 1) {
      throw new Error("Incorrect number of arguments. Expecting ID ex: D001");
    }
    let dId = args[0];

    let diagnosisAsBytes = await stub.getState(dId); //select payment from ledger
    if (!diagnosisAsBytes.toString() || diagnosisAsBytes.toString().length <= 0) {
      throw new Error("Payment with dId" + dId + " does not exist");
    }
    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Selecting a diagnosis ===========");
    return diagnosisAsBytes;
  }

  async nthDocotorDiagnosis(stub, args) {
    console.info("============= START : Mango Query Slecting all diagonsis of Doctors ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting Email ex: doctorhrm@gmail.com"
      );
    }

    let email = args[0];

    let query = {
      "selector": {
        "docType": "diagnosis",
        "doctorid": email
      }
    };

    let diagnosisAsBytes = await stub.getQueryResult(JSON.stringify(query));

    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Mango Query Slecting all diagonsis of Doctors ===========");
    return diagnosisAsBytes;

  }

  async nthPatientDiagnosis(stub, args) {
    console.info("============= START : Mango Query Slecting all diagonsis of Patient ===========");
    if (args.length != 1) {
      throw new Error(
        "Incorrect number of arguments. Expecting email ex: patienthrm@gmail.com"
      );
    }

    let email = args[0];

    let diagnosisAsBytes = await stub.getQueryResult({
      selector: {
        docType: "diagnosis",
        patientid: email
      }
    });

    console.log(diagnosisAsBytes.toString());
    console.info("============= END : Mango Query Slecting all diagonsis of Doctors ===========");
    return diagnosisAsBytes;
  }

  async getAllDoctors(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "doctor";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

  async getAllPatient(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "patient";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

  async getAllDiagnosis(stub, args) {
    let queryString = {};
    queryString.selector = {};
    queryString.selector.docType = "diagnosis";
    let resultsIterator = await stub.getQueryResult(
      JSON.stringify(queryString)
    );
    let allResults = [];
    while (true) {
      let res = await resultsIterator.next();

      if (res.value && res.value.value.toString()) {
        let jsonRes = {};
        console.log(res.value.value.toString("utf8"));
        jsonRes.Key = res.value.key;
        try {
          jsonRes.Record = JSON.parse(res.value.value.toString("utf8"));
        } catch (err) {
          console.log(err);
          jsonRes.Record = res.value.value.toString("utf8");
        }

        allResults.push(jsonRes);
      }
      if (res.done) {
        await resultsIterator.close();
        let queryResults = Buffer.from(JSON.stringify(allResults));
        console.log(queryResults.toString());
        return queryResults;
      }
    }
  }

};

shim.start(new Chaincode());
“严格使用”;
常数垫片=需要(“织物垫片”);
const util=require(“util”);
让Chaincode=class{
异步初始化(存根){
//此方法用于初始化通道上的chincode
console.info(“================实例化的HRM链码====================”);
返回shim.success();
}
异步调用(存根){
设ret=stub.getFunctionAndParameters();
控制台信息(ret);
let method=this[ret.fcn];
if(!方法){
console.error(“未找到名称为“+ret.fcn+”的函数”);
抛出新错误(“收到的未知函数”+ret.fcn+“调用”);
}
试一试{
让有效载荷=等待方法(存根,ret.params);
返回垫片成功(有效载荷);
}捕捉(错误){
控制台日志(err);
返回垫片错误(err);
}
}
异步patientRegistration(存根、参数){
console.info(“======================开始:注册患者=================”;
如果(参数长度!=22){
抛出新错误(
`参数数不正确。应为22个参数,但得到${args.length}`
);
}
让patientAsBytes=wait stub.getState(args[0]);//从分类账中获取特定患者
//log(“hiiii”+driverAsBytes.toString());
if(patientAsBytes.toString()){
//检查他是否已经注册
log(patientAsBytes.toString());
抛出新错误(“ID为“+args[0]+”的患者已注册”);
}
var患者={
医生类型:“病人”,
标题:args[0],
名字:args[1],
middlename:args[2],
姓氏:args[3],
dob:args[4],
性别:args[5],,
血型:args[6],
身高:[7],
重量:[8],
过敏:[9],
addressline1:args[10],
addressline2:args[11],
城市:args[12],
postalcode:args[13],
电邮:args[14],,
联系人编号:args[15],
etitle:args[16],
efirstName:args[17],
esurname:args[18],
联系人1:args[19],
联系人2:args[20],
相关性:args[21]
};
wait stub.putState(patient.email,Buffer.from(JSON.stringify(patient));//将新患者添加到分类账
console.info(“=========================结束:注册患者==============”;
}
异步addDoctor(存根,参数){
console.info(“======================开始:注册医生====================”;
如果(参数长度!=12){
抛出新错误(
`参数数量不正确。应为12个参数获得${args.length}`
);
}
让doctorAsBytes=wait stub.getState(args[0]);//从分类账中获取特定的医生
if(doctorAsBytes.toString()){
log(doctorAsBytes.toString());
//检查他是否已经注册
抛出新错误(“带RegNo的医生”+args[0]+“已注册”);
}
var医生={
docType:“医生”,
标题:args[0],
名字:args[1],
姓氏:args[2],
medicalregno:args[3],
dob:args[4],
性别:args[5],,
专业:args[6],
addressline1:args[7],
addressline2:args[8],
城市:args[8],
postalcode:args[9],
电邮:args[10],,
联系人编号:args[11],
};
wait stub.putState(doctor.email,Buffer.from(JSON.stringify(doctor));//将新医生添加到分类账
console.info(“=========================结束:注册医生=================”);
}
异步makeDiagnosis(存根、参数){
console.info(“=========================开始:进行诊断==============”;
如果(参数长度!=6){
抛出新错误(
`参数数量不正确。应为6个参数获得${args.length}`
);
}
var诊断={
docType:“诊断”,
id:args[0],
patientid:args[1],
doctorid:args[2],
sysdate:args[3],
系统时间:args[4],
诊断:args[5]
};
等待stub.putState(diagnosis.id,Buffer.from(JSON.stringify(diagnosis));//将新的罚款放入leadger
console.info(“======================结束:进行诊断==============”;
}
异步selectNthDoctor(存根、参数){
console.info(“=========================开始:选择医生=================”;
如果(args.length!=1){
抛出新错误(
“参数数不正确。应为regNo ex:doctorhrm@gmail.com"
);
}
让email=args[0];
让doctorAsBytes=wait stub.getState(email);//从state获取官员

如果(!doctorAsBytes.toString()| | doctorAsBytes.toString().length检查链码的日志。执行
docker ps
,然后执行
docker logs dev-peer0-something-xxxx
。这将指出部署中的确切错误。如果没有这些日志,很难找出错误。@VarunAgarwal这不是问题所在。但使用fabcar链码,则会创建dev peer0ok,所以我遇到了此类问题。您必须以正确的方式进行调试。链码容器始终启动。之后,它们要么停止并保留为图像,要么被完全删除。您可以执行
docker image ls
,因此检查它是否为图像并获取日志。如果代码中存在问题,通常会发生这种情况。如果容器被删除,则删除您必须在docker ps进行实例化时继续执行
docker ps
,并在删除自身之前快速捕获日志。这并不理想,但如果需要,我可以这样调试。可以吗