在 angular 中使用 airbrake 报告 $http 错误
report $http error using airbrake in angular
我已经配置了 airbrake 来报告错误,但它似乎没有报告 http 错误。因此,我试图将其配置为这样做。这是我的工厂:
import AirbrakeClient from 'airbrake-js';
export let errorHttpInterceptor = ($q, CONSTANT) => {
'use strict';
let airbrake = new AirbrakeClient({
projectId: CONSTANTS.AIRBRAKE_PROJECT_ID,,
projectKey: CONSTANTS.AIRBRAKE_PROJECT_KEY
});
airbrake.addFilter((notice) => {
console.log(notice);
return notice;
});
return {
requestError: (rejection) => {
console.log(rejection);
// do something on error
airbrake.notify(rejection);
return $q.reject(rejection);
},
responseError: (rejection) => {
console.log(rejection);
airbrake.notify(rejection);
return $q.reject(rejection);
}
};
};
然后在配置中:
let httpAuthConfig = /*@ngInject*/ $httpProvider => {
'use strict';
let errorHttp = $injector => { return $injector.get('errorHttpInterceptor'); };
$httpProvider.interceptors.push(['$injector', errorHttp]);
};
似乎只有我得到 [object Object]
作为减速板错误,没有额外的错误细节或回溯。还有什么我想念的吗?
这里是 Airbrake 的摩根!
由于您使用的是 angular,您是否尝试过添加 $exceptionHandler
? airbrake-js 自述文件在 angular 部分有一个示例:
https://github.com/airbrake/airbrake-js#angular
mod.factory('$exceptionHandler', function ($log, config) {
airbrake = new airbrakeJs.Client({
projectId: config.airbrake.projectId,
projectKey: config.airbrake.key
});
airbrake.addFilter(function (notice) {
notice.context.environment = config.envName;
return notice;
});
return function (exception, cause) {
$log.error(exception);
airbrake.notify({error: exception, params: {angular_cause: cause}});
};
});
如果您在 angular 工作方面需要任何进一步的帮助,请随时发送电子邮件至 support@airbrake.io 或向我们发送应用内消息!
来自,
摩根
我终于发现服务器响应不是 airbrake 想要的格式,所以我将根据响应构建的错误消息传递给 airbrake 通知程序。
responseError: (response) => {
console.log(response);
airbrake.notify({
error: {
message: response.status + ': ' + response.data.error.general,
name: 'HttpError: ',
stack: ''
}
});
return $q.reject(response);
}
感觉这不是最干净的解决方案,但确实有效。
我已经配置了 airbrake 来报告错误,但它似乎没有报告 http 错误。因此,我试图将其配置为这样做。这是我的工厂:
import AirbrakeClient from 'airbrake-js';
export let errorHttpInterceptor = ($q, CONSTANT) => {
'use strict';
let airbrake = new AirbrakeClient({
projectId: CONSTANTS.AIRBRAKE_PROJECT_ID,,
projectKey: CONSTANTS.AIRBRAKE_PROJECT_KEY
});
airbrake.addFilter((notice) => {
console.log(notice);
return notice;
});
return {
requestError: (rejection) => {
console.log(rejection);
// do something on error
airbrake.notify(rejection);
return $q.reject(rejection);
},
responseError: (rejection) => {
console.log(rejection);
airbrake.notify(rejection);
return $q.reject(rejection);
}
};
};
然后在配置中:
let httpAuthConfig = /*@ngInject*/ $httpProvider => {
'use strict';
let errorHttp = $injector => { return $injector.get('errorHttpInterceptor'); };
$httpProvider.interceptors.push(['$injector', errorHttp]);
};
似乎只有我得到 [object Object]
作为减速板错误,没有额外的错误细节或回溯。还有什么我想念的吗?
这里是 Airbrake 的摩根!
由于您使用的是 angular,您是否尝试过添加 $exceptionHandler
? airbrake-js 自述文件在 angular 部分有一个示例:
https://github.com/airbrake/airbrake-js#angular
mod.factory('$exceptionHandler', function ($log, config) {
airbrake = new airbrakeJs.Client({
projectId: config.airbrake.projectId,
projectKey: config.airbrake.key
});
airbrake.addFilter(function (notice) {
notice.context.environment = config.envName;
return notice;
});
return function (exception, cause) {
$log.error(exception);
airbrake.notify({error: exception, params: {angular_cause: cause}});
};
});
如果您在 angular 工作方面需要任何进一步的帮助,请随时发送电子邮件至 support@airbrake.io 或向我们发送应用内消息!
来自, 摩根
我终于发现服务器响应不是 airbrake 想要的格式,所以我将根据响应构建的错误消息传递给 airbrake 通知程序。
responseError: (response) => {
console.log(response);
airbrake.notify({
error: {
message: response.status + ': ' + response.data.error.general,
name: 'HttpError: ',
stack: ''
}
});
return $q.reject(response);
}
感觉这不是最干净的解决方案,但确实有效。