2012-04-05 9 views
1

node.jsで実行したときのこのコードの出力は、最後の行(行番号9)で発生するエラーのスタックトレースです。 7行目で発生するエラーは、何らかの形でノードによって「吸収」されます。私がtry/catchステートメントでラップしても、ノードのデフォルトのエラー処理コードと同様に、スタックトレース出力を詳細に取得することはできません。jsdom.jqueryifyコールバックによってスローされたエラーをどのように捕捉できますか?

9行目のエラーをキャッチして、9行目のように詳細を取得するにはどうすればよいですか?

jsdom = require('jsdom'); 
var testHTML = "<html><head><title>Hi!</title></head><body><p>Hi!</p></body></html>"; 
jsdom.jQueryify(
    jsdom.jsdom(testHTML).createWindow(), 
    'http://code.jquery.com/jquery-1.4.2.min.js' , 
    function() { 
     var a = broken(); 
    }); 
var a = broken(); 

は(NB:これは私がjQueryify call-内からの呼び出しの結果として形成「深く」ネストされたスタックで発生したエラーと書いていますはるかに複雑なスクリプトから簡略化した例であります背中、およびエラーに関する詳細な統計情報を得ることができず、それが今絶対痛みでデバッグ)

+0

'try/catch'で' jsdom.queryify'の呼び出しをラッピングしましたか?それが同期している場合は動作する必要があります –

答えて

0

それは非同期ですので、あなたはjQueryifyへの呼び出しの周りtry/catchを置くことはできません。コールバックのトップレベルのコールバックにtry catchを置く必要があります。

jsdom = require('jsdom'); 
var testHTML = "<html><head><title>Hi!</title></head><body><p>Hi!</p></body></html>"; 
jsdom.jQueryify(
    jsdom.jsdom(testHTML).createWindow(), 
    'http://code.jquery.com/jquery-1.4.2.min.js' , 
    function() { 

     try { 
      var a = broken(); 
     } catch(e) { 
      // Handle the error here 
     } 
    }); 
var a = broken(); 
関連する問題