2017-08-14 56 views
2

我有這樣的代碼,是PIPL API的包裝的一部分,我收到此錯誤:類型錯誤:回調不是一個函數 -

這個主代碼做一個GET請求並返回從信息API

期待由你:)得到幫助

return callback(err, JSON.parse(body) || body); 
TypeError: callback is not a function 

這裏有什麼問題?我該如何解決這個錯誤?

(function() { 
    var _ = require('lodash') 
     , request = require('request') 
     , util = require('util') 
     , url = require('url'); 

    var Handler = function(subClass) { 
     this.createCall = function(method, path, options, callback) { 
      return function(config) { 
       if (_.isFunction(options)) { 
        callback = options; 
        options = {}; 
       } 
       path = url.format({ 
        pathname: path, 
        query: options 
       }); 
       path = url.resolve(config.api_url, path); 
       console.log(path) 

       var parameters = { 
        url: path, 
        method: method 
       }; 

       request(parameters, function(err, response, body) { 
        return callback(err, JSON.parse(body) || body); 
       }); 
      } 
     }; 

     _.merge(subClass, this); 
     return this; 
    }.bind(this); 

    module.exports = Handler; 
}).call(this); 
+0

你是如何調用'createCall'?看起來像你正在分配給'callback'的任何東西都不是一個函數...... –

+0

我明白了,但它最終的形式如何呢? –

+0

請提供您正在使用的包裝的鏈接,以及如何使用它。 –

回答

0

該問題正在發生,因爲search.query函數接受選項和回調。 但NPM文檔中它說,它接受type, options, callback

檢查github

此錯誤意味着您正試圖調用的東西作爲一個功能,而這是不是一個函數。在你的情況下,問題是你只發送一個參數,即'filepath',並且不傳遞要調用的函數。

我猜傳遞this.xmlObjectRepositoryLoader(文件路徑)回調(圖)可能會解決您的錯誤

0

當你調用createCall功能,你應該通過4個參數給它,最後一個參數應該是一個函數(稍後將被調用)。它看起來像callback = options;行沒有多大意義。

+0

我明白,但它應該是什麼樣子? –

相關問題