我在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
模块。在这方面有人可以帮助我吗?
答案 0 :(得分:1)
您使用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();
}
});
}