- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为我的整个 MEAN.js
项目实现一个记录器。我有一个运行良好的服务器端记录器,并且我已经设置了一个端点来接收 POST 请求,但记录客户端错误。我正在使用 StackTrace.js
进行客户端错误记录,但出现了一些错误;现在我正在使用 StackTrace 的错误堆栈解析器,但仍然出现错误。我在 Angular 的 $exceptionHandler 上使用装饰器来实现这一点:
$provide.decorator("$exceptionHandler",
function($delegate, traceService, $log, $window) {
return function(exception, cause) {
$delegate(exception, cause);
try {
var errorMessage = exception.toString();
var stackTrace = traceService.
parse(exception).
then(function(stackFrames) {
$.ajax({
type: 'POST',
url: '/logger',
contentType: 'application/json',
data: angular.toJson({
url: $window.location.href,
message: errorMessage,
type: 'exception',
stackFrace: stackFrames,
cause: cause || ''
})
}).fail(function() {
$log.warn('POST request failed');
});
}).catch(function(error) {
$log.warn('Error StackTrace');
});
} catch (loggingError) {
$log.warn('Error server-side logging failed');
$log.log(loggingError);
}
};
});
traceService
是一个 Angular 服务,充当 StackTrace/error-stack-parser 函数的代理。 traceService.parse
等同于 ErrorStackParser.parse
。 traceService
实现为:
angular.module('core').factory('traceService', function() {
return {
parse: ErrorStackParser.parse
};
});
我已将此装饰器代码放在 Angular 应用程序 Bootstrap 上,并通过在 Controller 上抛出错误来进行测试。当我运行该应用程序时,我在客户端控制台上收到此错误:
Error server-side logging failed
angular.js:13708 TypeError: this.parseV8OrIE is not a function
at Object.ErrorStackParser$$parse [as parse] (error-stack-parser.js:70)
at application.js:22
at invokeLinkFn (angular.js:9816)
at nodeLinkFn (angular.js:9215)
at compositeLinkFn (angular.js:8510)
at publicLinkFn (angular.js:8390)
at lazyCompilation (angular.js:8728)
at updateView (viewDirective.ts:278)
at Object.configUpdatedCallback [as configUpdated] (viewDirective.ts:226)
at configureUiView (view.ts:164)
这似乎是 error-stack-parse 的问题;我似乎找不到关于这个问题的任何文章,所以我确定这是我做错的事情,我正在测试的方式或其他东西。任何人都可以提供一些关于失败原因的见解吗?
编辑
我根据 Caramiriel 的评论修改了代码。似乎我需要将 error-stack-parser 中的所有函数添加到我的服务中。这是 traceService
:
angular.module('core').factory('traceService', function() {
return {
parse: ErrorStackParser.parse,
parseV8OrIE: ErrorStackParser.parseV8OrIE,
extractLocation: ErrorStackParser.extractLocation
};
});
现在我收到这个错误:
TypeError: StackFrame is not a constructor
at Object.<anonymous> (http://localhost:3000/lib/error-stack-parser/error-stack-parser.js:105:24)
at Array.map (native)
at _map (http://localhost:3000/lib/error-stack-parser/error-stack-parser.js:22:26)
at Object.ErrorStackParser$$parseV8OrIE [as parseV8OrIE] (http://localhost:3000/lib/error-stack-parser/error-stack-parser.js:95:20)
at Object.ErrorStackParser$$parse [as parse] (http://localhost:3000/lib/error-stack-parser/error-stack-parser.js:70:29)
at http://localhost:3000/application.js:22:11
at invokeLinkFn (http://localhost:3000/lib/angular/angular.js:9816:9)
at nodeLinkFn (http://localhost:3000/lib/angular/angular.js:9215:11)
at compositeLinkFn (http://localhost:3000/lib/angular/angular.js:8510:13)
at publicLinkFn (http://localhost:3000/lib/angular/angular.js:8390:30)
最佳答案
看起来您正在使用 error-stack-parser 而不依赖于 stackframe 项目。
如果您使用 npm 或 bower,您将自动获得该依赖项。
关于javascript - 将 StackTrace.js 与 Angular.js 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38334865/
我希望这个问题能够在 SO 的规则下存活下来,因为我进行了很多搜索,没有找到关于它的文档,有时甚至忽略了它,但这让我既不理解问题也不理解解决方案。 Exceptoion 的 StackeTrace 有
我正在Gradle项目中设置Spotbugs,但是当我运行它时,Spotbugs会生成输出报告,但是将失败的堆栈跟踪记录到控制台。我想知道是否有办法抑制它。 这是我的Gradle文件: buildsc
这是我执行类的主要方法的任务,该类在Java项目的build.gradle中定义: task(runClass, type: JavaExec) { try { main =
我遇到了一个意外错误,它创建了包含大量行和不同库的 stackTrace。如果从上到下阅读,可以看到除了第2-3个方法之外的每个被调用的方法。看起来像 //Pseudo code method1_1(
我正在尝试将 gradle java 应用程序部署到 heroku (基于 jhipster)。我可以使用“heroku local”在本地构建并运行它,但是当我尝试远程部署它时,当它尝试构建应用程序
以下异常: Exception in thread "main" java.lang.NullPointerException at javaapplication7.App.main(App.jav
我需要按关键字从日志文件中 grep 完整的堆栈跟踪。 这段代码工作正常,但在大文件上会变慢(比文件更慢)。 我认为改进正则表达式以查找关键字的最佳方法,但我无法完成。 #!/usr/bin/perl
我在托管应用程序中收到错误消息,我正在尝试了解错误发生的原因。 为此,我查看了错误页面上的堆栈跟踪,如下所示: [ NullReferenceException: Object reference n
我的日志库中有这段代码 var stackTrace = new StackTrace(); string operationName = stackTrace.GetFrame(1).GetMeth
我们正在运行多个 Sitecore 网站,并且刚刚收到反馈,在出现错误时向网站用户提供堆栈跟踪可能很危险。既然人们获得了堆栈跟踪信息,该网站是否会更容易受到黑客攻击? 最佳答案 这绝对是弊大于利。根据
我们正在使用 Rational Application Developer 7.5(基于 Eclipse 3.4)为 WebSphere Application Server 6.1 开发一个 Web
给定以下流畅的 API 调用: Foo() .Bar1(() => { ... }) .Bar2(() => { ... }) .Bar3(); 我想稍后确定代码文件和 Bar
在我使用 StackTrace 的代码中发生了一些奇怪的事情。几乎就像没有加载调试信息一样......但我正在 DEBUG 构建上运行它。.pdb 文件肯定在 bin 目录中并且是最新的。我的想法真的
我不断收到此错误,我似乎在网上找不到任何帮助。我是flutter和android studio的新手。非常感谢任何帮助 FAILURE:构建失败并出现异常。 Where: Build file 'C:
在我的项目的目标目录中,有一个名为 stacktrace.log 的文件。我已经意识到文件的大小已经超过 3 GB。删除这个文件对我来说安全吗?删除后是否会导致任何文件未找到异常?谢谢你的时间。 -
我知道 http://richhickey.github.com/clojure/clojure.stacktrace-api.html . 有没有办法在不抛出异常并捕获它的情况下获取当前的堆栈跟踪?
我有一个异常记录器,它将所有异常记录到日志文件中: class function TLogger.LogException (ACaller: String; E: Exception): Boole
有时我在jQuery UI js文件的一行中收到错误或未处理的异常。我知道问题是一个空或空的对象或属性传递给jQuery。例如,在Chrome浏览器中,我收到“未捕获的TypeError”错误。 做一
我只是通过使用全局函数(在我的情况下称为GetCallingMethod)进行了一些分析。 通常情况下,它的效果很好。但是在某些情况下,应用程序被阻止。当关闭应用程序时,它被阻止。在Visual St
我正在分析遗留应用程序中的错误,同时清理并改进它。我有一些堆栈跟踪被记录到数据库中,但是它存储的量有一个限制 (VARCHAR2(1000)),并且错误发生在 System.Data 的深处.....
我是一名优秀的程序员,十分优秀!