2017-07-07 16 views
0

awaitキーワードを使用しています。次のコードでHTTPSに接続https.getを確認した後に「メッセージ」が表示されないエラー

テスト:

const util = require('util'), 
    https = require('https'), 
    httpsGet = util.promisify(https.get); 

var start = async function(){ 
    try { 
     var res = await httpsGet('https://github.com') 
    } catch(err) { 
     console.log('>>>>>>>CAUGHT AN ERROR>>>>>>', err.message) 
    } 
    console.log('FINISHED') 
} 

start() 

戻り値:

>>>>>>>CAUGHT AN ERROR>>>>>> undefined 

は、私は私のコードが壊れている疑いがあるが、私はどのようにわかりません。 どうすれば実際のエラーを取得できますか?

更新:要求されたとして、単にerr.messageないERRログイン:

>>>>>>>CAUGHT AN ERROR - RAW ERR>>>>>> IncomingMessage { 
    _readableState: 
    ReadableState { 
    objectMode: false, 
    highWaterMark: 16384, 
    buffer: BufferList { head: null, tail: null, length: 0 }, 
    length: 0, 
    pipes: null, 
    pipesCount: 0, 
    flowing: null, 
    ended: false, 
    endEmitted: false, 
    reading: false, 
+1

'err.message'の代わりに' err'を記録すると何かが表示されますか?私はエラーオブジェクトには自動的に呼び出された 'toString'メソッドがあると思います。 – Kaddath

+0

'(JSON.stringify(err))のようにログするとどうなりますか? –

+0

@Kaddath上記の 'err'を記録した結果が – mikemaccana

答えて

3

https.getdoes not have an err optionのコールバック。ストリームです - エラーは.on(error)で処理されます。 promisifyを期待はエラーになります - それはerrコールバックを持っていないとutil.promisify()

で使用することはできませんのでerrが表示されている唯一の理由は、resは、コールバックの最後の項目であるということです。したがって、ここで投げられたerrは実際にはresストリームです。

関連する問題