簡體   English   中英

nodejs:TypeError:回調不是函數

[英]nodejs : TypeError: callback is not a function

我寫了下面的代碼來讀取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);
        });        
    };

我從下面的方法調用xmlObjectRepositoryLoader ,但它返回錯誤為TypeError: callback is not a function

this.objectLoader = function(filePath){
        if (filePath.includes(".xml")) {
            console.log(this.xmlObjectRepositoryLoader(filePath));
    }

你能告訴我我錯在哪里嗎?我該如何解決這個問題

您正在嘗試呼叫callback叫,此處:

return callback(map);

但是,您沒有將回調傳遞給xmlObjectRepositoryLoader

console.log(this.xmlObjectRepositoryLoader(filePath));

改為:

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

由於我沒有評論的聲譽。 我正在回答這個問題。 對不起。 你錯過了下面代碼中的參數

this.objectLoader = function(filePath){
        if (filePath.includes(".xml")) {
            console.log(this.xmlObjectRepositoryLoader(filePath));
    }

this.xmlObjectRepositoryLoader(文件路徑)

在上面這行。

你可以在函數xmlObjectRepositoryLoader中包含一個驗證來檢查回調是否是一個函數,然后調用它來避免拋出錯誤(如果它不是一個強制參數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM