4

Javascript エラーをサーバーに自動的に報告するTraceKitを試しています。スタック トレースを除いて、正常に動作します。単一の要素のみが含まれています。

TraceKit.report.subscribe(function(stackInfo) { alert(stackInfo.stack.length);});

function foo() {
   bar();
}

function bar() {                                                
   throw "oops";
}

foo();  

アラートは「1」を示します。同じコードで JSFiddleも作成しました。

完全なスタック トレースを取得できないのはなぜですか? Chrome と Firefox の両方でテストしました。

4

1 に答える 1

4

今のところ、変更throw "oops";throw new Error("oops");て、完全なスタックトレースを取得する必要があります。

将来、TraceKitはエラーを再スローし、それに応じてスタックトレースを修正することで、これを修正できます。このjsfiddleは、実際のスタックトレースを取得するための再スローを示しています:http://jsfiddle.net/DevinRhode2/dAYmJ/1/

そこにあるコード:

try {
  function foo() {
     bar();
  }

  function bar() {                                                
     throw "oops";
  }

  foo();
} catch (e) {
  console.log(e, e.message, e.stack); //oops undefined undefined 
  try {
    throw new Error(e);
  } catch (e) {
    console.log(
      e,       e.message, e.stack);/*
      Error {} "oops"     "Error: oops
        at file://localhost/Users/devinrhode2/Desktop/test.html:23:13"
    */
  }
}​​​​​​​

githubでのTraceKitに関するその他のディスカッションはこちら:https ://github.com/occ/TraceKit/issues/23

これを持ってきてくれてありがとうアレックス!

于 2013-01-04T07:07:26.300 に答える