2016-05-08 4 views
0

endイベントがcoffeeスクリプトのストリームによって起動されたときにコールバックを実行しようとしています。TypeError:コールバックがコールバックを実行するときの関数ではありません

C:\Users\Gum-Joe\Documents\Projects\retisci\lib\downloader.js:45 
    callback(); 
    ^

TypeError: callback is not a function 
    at Request.<anonymous> (C:\Users\Gum-Joe\Documents\Projects\retisci\lib\downloader.js:45:5) 
    at emitOne (events.js:101:20) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (C:\Users\Gum-Joe\Documents\Projects\retisci\node_modules\request\request.js:988:12) 
    at emitNone (events.js:91:20) 
    at IncomingMessage.emit (events.js:185:7) 
    at endReadableNT (_stream_readable.js:926:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickCallback (internal/process/next_tick.js:98:9) 

NB:私のコードを実行しようとする上で、私は次のエラーが表示さ出力は私のフルネームを保護するように変更しました。

はここに私のコードです:

### 
# Downloader 
# @param url {String} url to GET 
# @param save {String} Save file 
# @param options {Object} Options 
# @param callback {Function} Callback 
### 
downloader.get = (url, save, options, logger_options, callback) -> 
    log = require('single-line-log').stdout 
    # Download 
    # Logger 
    logger = new Logger('retis', logger_options) 
    # File stream 
    file_stream = fs.createWriteStream(save) 
    log("#{"[retis INFO]".green} Downloading #{url}...0% at 0 kb/sec...\n") 
    progress(request(url)) 
    .on('progress', (state) -> 
     percent = "#{Math.floor(state.percentage * 100)}% [#{Math.round(state.size.transferred/1024)} kb of #{Math.round(state.size.total/1024)} kb]" 
     log("#{"[retis INFO]".green} Downloading #{url}...#{percent} at #{Math.round(state.speed/1024)} kb/sec...\n") 
    ) 
    .on('data', (d) -> 
     file_stream.write d 
     return 
    ) 
    .on 'error', (e) -> 
     callback(e) 
     return 
    .on 'end',() -> 
     log("#{"[retis INFO]".green} Downloading #{url}...100%\n") 
     logger.info("Downloaded #{url}.\n") 
     # This is what causes the error 
     callback() 
     return 
    return 

機能の開始時にコールバックを実行する機能の作品の最後にそれを実行しているが、endイベントのコールバックでそれを実行している、しません動作します。

誰かが私のコードでこのバグを修正する方法を提案してもらえますか?

NB:https://github.com/jakhu/retis-ciのすべてのコードはsrc/downloader.coffeeファイルにあります。このバグが関係する場合は、他のファイルを自由に見てください。

あなたが予想より1つの少ないのparamでgetメソッドを呼び出しているunpacker.coffeeファイルの行56で
+0

どのように 'downloader.get'を呼び出していますか? –

答えて

0

:このように見て正しいメソッドのシグネチャが

get(data.url, file_save, @download_options, (err) -> 

get(url, save, options, logger_options, callback) 

- もちろん - 最後のparam(コールバック)が未定義になります。

+0

こんにちは、私のコードでこの問題を発見しました。 'src/plugins.coffee'としか呼ばれていないと仮定して私は愚かです。とにかく助けてくれてありがとう! –

関連する問題