使用应用程序见解跟踪自定义错误时出现问题:类型错误:无法读取未定义的属性'stack'



我已经编写了一个自定义错误类,并希望使用Azure Application Insights跟踪错误。我正在使用Node.js。当我尝试跟踪自定义错误时,我会得到以下错误:

TypeError: Cannot read property 'stack' of undefined
at Function.EnvelopeFactory.createExceptionData (/Users/liam/Desktop/CustomError/node_modules/applicationinsights/out/Library/EnvelopeFactory.js:145:40)
at Function.EnvelopeFactory.createEnvelope (/Users/liam/Desktop/CustomError/node_modules/applicationinsights/out/Library/EnvelopeFactory.js:32:40)
at NodeClient.TelemetryClient.track (/Users/liam/Desktop/CustomError/node_modules/applicationinsights/out/Library/TelemetryClient.js:116:44)
at NodeClient.TelemetryClient.trackException (/Users/liam/Desktop/CustomError/node_modules/applicationinsights/out/Library/TelemetryClient.js:69:14)
at Object.<anonymous> (/Users/liam/Desktop/CustomError/app.js:10:8)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

这是代码:

class CustomError extends Error {  
constructor (message) {
super(message)

Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.status = 404;
}

statusCode() {
return this.status
}
}
const appInsights = require('applicationinsights');
appInsights.setup('MY_KEY').start();
let client = appInsights.defaultClient;
const customError = require('./exceptions');
let newError = new customError('The custom error was thrown')
client.trackException(newError);

我已经基于其他在线资源对TelemetryClient对象进行了一些研究,但我认为这不是正确的方向。

我使用此资源作为指南:https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics#trackexception

我通过向trackException传递一个键值对来解决这个问题,其中键是异常,值是错误:

client.trackException({exception: new customError('This is a custom error')});

完整代码:

class CustomError extends Error {  
constructor (message) {
super(message)

Error.captureStackTrace(this, this.constructor);
this.name = this.constructor.name;
this.status = 404;
}

statusCode() {
return this.status
}
}
const appInsights = require('applicationinsights');
appInsights.setup('MY_KEY').start();
let client = appInsights.defaultClient;
client.trackException({exception: new CustomError('This is a custom error')});

相关内容

最新更新