Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs:TypeError:回调不是函数_Javascript_Node.js_Callback_Typeerror - Fatal编程技术网

Javascript nodejs:TypeError:回调不是函数

Javascript nodejs:TypeError:回调不是函数,javascript,node.js,callback,typeerror,Javascript,Node.js,Callback,Typeerror,我编写了以下代码来读取xml并返回hashmap: this.xmlObjectRepositoryLoader = function (xmlPath, callback){ var map = {} var innerMap = {}; var el; fs.readFile(xmlPath, "utf-8",function(err, data) { if(err){ c

我编写了以下代码来读取xml并返回hashmap:

this.xmlObjectRepositoryLoader = function (xmlPath, callback){
        var map = {}
        var innerMap = {};
        var el;
        fs.readFile(xmlPath, "utf-8",function(err, data) {
            if(err){
                console.log('File not found!!')
            }
            else{
                console.log(data)
                var doc = domparser.parseFromString(data,"text/xml");
                var els = doc.getElementsByTagName("Child");
                for(var i =0 ; i< els .length;i++){
                    var e = elements[i];
                    eName = e.getAttribute("a");
                    var params = elm.getElementsByTagName("abc");
                    innerMap = {};
                    for(var j =0 ; j< params.length;j++){
                        var param = params[j];
                        var b = param.getAttribute("b");
                        var c= param.getAttribute("c");
                        innerMap[b] = c;
                    }
                    map[el] = innerMap;
                    innerMap={};
                };
            }
            console.log(map);
            return callback(map);
        });        
    };

您能告诉我我错在哪里,以及如何解决此问题吗

您正在尝试调用
回调
,此处:

return callback(map);
但是,您没有将回调传递给
xmlObjectRepositoryLoader

console.log(this.xmlObjectRepositoryLoader(filePath));
改为这样做:

this.xmlObjectRepositoryLoader(filePath, function(map){ 
    console.log(map)
});

因为我没有评论的名声。我这样回答。对不起。U缺少下面代码中的参数

this.objectLoader = function(filePath){
        if (filePath.includes(".xml")) {
            console.log(this.xmlObjectRepositoryLoader(filePath));
    }
此.xmlObjectRepositoryLoader(文件路径)

在上面一行


您可以在函数xmlObjectRepositoryLoader中包含验证,以检查回调是否为函数,然后调用它以避免抛出错误(如果不是强制参数)。

希望在进行向下投票之前,人们也应该给出原因。无论如何,谢谢你看一看。
this.objectLoader = function(filePath){
        if (filePath.includes(".xml")) {
            console.log(this.xmlObjectRepositoryLoader(filePath));
    }