2017-10-28 10 views
0

responseHandlerをrequireから渡すと、同じファイル内にあるが、エラーリスナー引数を取得するのは関数でなければなりません。 console.logは返り値を返し、関数を返すので問題は見えませんか?私はすべてが正常に動作しますdownloader.jsの内容のためのライン1を交換した場合nodejs httpリスナー引数は関数でなければなりません

var responseHandler = require("./downloader.js"); 
log(responseHandler); // Logs [Functions: responseHandler) 
request = https.get(fileUrl, responseHandler); // Error "listener" argument must be a function (according to the log line above, it is!?) 

... downloader.jsの

コンテンツはちょうど

var responseHandler = function(response){ 
    // some code to process response.statusCode 
    response.on('data',function(chunk){//stuff}); 
    response.on('error',function(e){//stuff}); 
    response.on('end',function(e){//stuff}); 
} 
exports.responseHandler = responseHandler; 

私は維持したいですメインファイルはきれいで小さく、このアイデアはアイデアとして機能していますか?

答えて

1

それを呼び出す必要があるので、

request = https.get(fileUrl, responseHandler.responseHandler); 

は、あなたがするResponseHandlerと呼ばれる機能を持つオブジェクトを書き出します次に、インポートした値が関数ではなく、関数の値を持つオブジェクトになります

module.exports = responseHandler; 

:あなたがそれを行うことができます

var responseHandler = require("./downloader.js"); 
+0

Doh ...私は間違った方法で輸出を使っていた... – Darcey

1

あなたがやってみてくださいする必要があります:あなたは機能のみをエクスポートしたい場合は、直接

+0

これは '.js'ファイル内に複数の関数がある場合、現在のところ単一の関数をエクスポートすることはできません。 – wrangler

関連する問題