使用 async.parallel 时出错

Error while using async.parallel

我在 node.js 中使用 async 时出现绑定错误。有问题的代码:

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);

我收到的错误如下所示:

 [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)

我对 node.js 比较陌生,第一次尝试使用 async 模块。有人可以在这方面帮助我吗?

您正在使用 parallel 的回调函数覆盖您的路径。

只需从您的函数中删除第一个参数,即回调而不是您的数据:

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();
             }       
      });
}