当捆绑的JS文件中出现错误时,StackTrace-GPS会查找不存在的文件

时间:2017-08-01 17:14:22

标签: javascript stacktrace.js

我尝试使用StackTrace和StackTraceGPS来提取代码错误位置,但是,当捆绑文件中发生错误时,它会尝试检索不存在的文件。

例如我的vendors.min.js只是jQuery,jQueryUi的组合和迷你文件。

在我的应用中加载

vendors.min.js

app.min.js

然后我在app.min.js中触发错误并获取此错误对象:

Uncaught TypeError: (intermediate value).run is not a function
    at HTMLDocument.<anonymous> (app.js:95)
    at HTMLDocument.dispatch (vendors.min.js?v=6.0.83-11025:formatted:2393)
    at HTMLDocument.m.handle (vendors.min.js?v=6.0.83-11025:formatted:2325)

现在我将此堆栈发送到

StackTrace.fromError(error).then(stackTraceCallback);
function stackTraceCallback(stackFrames) {
  const gps = new StackTraceGPS();
  const newFrames = new Array(stackFrames.length)
  let frameResolved = 0;

  function allFramesResolved(){

    const newFrameStrings = newFrames.map(function(frame) {
      return frame.toString();
    })
    console.log('allFramesResolved has completed');
    console.log(newFrameStrings.join("\n"))
  }

  stackFrames.forEach((stackFrame, i) => {
    gps.pinpoint(stackFrame)
    .then(function(newFrame: any) {
      newFrames[i] = newFrame
      frameResolved++;
      if (frameResolved === stackFrames.length) {
        allFramesResolved()
      }
    }, function(){
      console.error(arguments);
    });
  });
}

打印stackFrame我会得到这个:

{columnNumber:0,
fileName:"http://example.com/dist/jquery-3.1.0.js",
functionName:"handle",
lineNumber:4918}

它正在尝试加载不存在且永远不会加载的jquery-3.1.0.js。所有jQuery都驻留在vendor.min.js中。我使用的所有文件都有源映射,而我的缩小的app.js文件显示错误的位置就好了,这样就行了。

0 个答案:

没有答案