Monday, 24 April 2017

Error: Can't set headers after they are sent. comes from calling the smart contract function

I wrote a smart contract for creating simple database. It contains multiple functions , when i hit an REST api first time it gives me correct output but at further hits it make node server crash with a message --

F:\project\blockchain\node_modules\solc\soljson.js:1 (function (exports, require, module, __filename, __dirname) { var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module .hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=type of process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(EN VIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write (x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath"normalize";var ret=nodeFS["readFileSync"](file

Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) at ServerResponse.header (F:\project\blockchain\node_modules\express\lib\response.js:725:10) at ServerResponse.send (F:\project\blockchain\node_modules\express\lib\response.js:170:12) at ServerResponse.json (F:\project\blockchain\node_modules\express\lib\response.js:256:15) at F:\project\blockchain\BlockchainDB\users\userFunction.js:37:47 at F:\project\blockchain\node_modules\web3\lib\web3\filter.js:120:21 at Array.forEach (native) at F:\project\blockchain\node_modules\web3\lib\web3\filter.js:119:32 at Array.forEach (native) at Object.onMessage [as callback] (F:\project\blockchain\node_modules\web3\lib\web3\filter.js:117:22)

my code for api

module.exports.creation=function(req,res){
var user_id = req.params.user_id || req.body.user_id;
var currency = req.params.user_id || req.body.currency ;
if(user_id == undefined || currency == undefined){
    res.status(500).json({status:false,errors:"Empty parameters"});
}else{
    isaccount().then(function(accountNumber){
    if(accountNumber!=null){
        var timestamp = Date.now();
        var result = contract.createUser.sendTransaction(user_id,currency,accountNumber,timestamp,{from:web3.eth.coinbase,gas:600000});
        var event = contract.CreatedUser(function(error, result) {
                if (!error){
                   if(result.args.userId!= undefined && result.args.accountId!= undefined && result.args.categoryId!= undefined){
                          logger.info("user created with id :"+result);
                          res.status(200).json({status:true,data:{iduser:result.args.userId,accountId:result.args.accountId,created_at:timestamp}});
                    }else{
                        logger.info("user creation have problem :");
                       res.status(500).json({status:false,errors:"no response"});
                      }
                }else{
                     logger.error(error);
                    res.status(500).send(false);
                }
            });
    }else{
        logger.debug("Problem in accountNumber generation");
        res.status(500).send(false);
    }
       });
}

}

please help me to solve this problem

Thanks in advance



via Satyam Agrawal

No comments:

Post a Comment