1

I am getting binding error while using async in node.js. The code in question:

var async = require('async');
var fs = require('fs');
var path = require('path');

function ignoreWhiteSpaceJudge(outDesired, outGenerated){

var contentOutDesired = "";
var contentOutGenerated = "";

async.parallel([

    function(outDesired, callback) {
           console.log(outDesired);

          fs.readFile(outDesired, 'utf8',function(error, data) {
                 if (error) {            
                      return callback(error);
                 } else {
                       contentOutDesired = data;
                      return callback();
                 }       
          });
    },

    function(outGenerated, callback) {

          fs.readFile(outGenerated, 'utf8', function(error, data) {
                 if (error) {            
                      return callback(error);
                 } else {
                       ontentOutGenerated = data;
                       return callback();
                 }       
          });
    }],

    function(error){
        if(error){
            console.log(error);
        }
        else{
            console.log(contentOutDesired);
            console.log(ontentOutGenerated);
        }

    });
 }


var pathToOutDesired = path.normalize('/home/repos/gabbar/testcases/outputs/output_1_1.out');
var pathToOutGenerated = path.normalize('/home/repos/gabbar/testcases/outputs/output_1_2.out');

ignoreWhiteSpaceJudge(pathToOutDesired, pathToOutGenerated);

The error I am getting looks like this:

 [Function]

 fs.js:423
    binding.open(pathModule._makeLong(path),
            ^
 TypeError: path must be a string
       at Object.fs.open (fs.js:423:11)
       at Object.fs.readFile (fs.js:206:6)
       at async.parallel.fs.readFile.ontentOutGenerated          (/home/repos/gabbar/validation/ignoreWhiteSpaceJudge.js:17:18)
at /home/repos/gabbar/node_modules/async/lib/async.js:570:21
at /home/repos/gabbar/node_modules/async/lib/async.js:249:17
at /home/repos/gabbar/node_modules/async/lib/async.js:125:13
at Array.forEach (native)
at _each (/home/repos/gabbar/node_modules/async/lib/async.js:46:24)
at async.each (/home/repos/gabbar/node_modules/async/lib/async.js:124:9)
at _asyncMap (/home/repos/gabbar/node_modules/async/lib/async.js:248:13)

I am relatively new to node.js and trying to use async module for the first time. Could somebody help me in this regard?

1 Answer 1

1

You are overwriting your paths with the callback function of parallel.

Just remove the first parameter from your functions which is the callback and not your data:

function(callback) {
       console.log(outDesired);

      fs.readFile(outDesired, 'utf8',function(error, data) {
             if (error) {            
                  return callback(error);
             } else {
                   contentOutDesired = data;
                  return callback();
             }       
      });
},

function(callback) {

      fs.readFile(outGenerated, 'utf8', function(error, data) {
             if (error) {            
                  return callback(error);
             } else {
                   ontentOutGenerated = data;
                   return callback();
             }       
      });
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.