apm-agent-nodejs icon indicating copy to clipboard operation
apm-agent-nodejs copied to clipboard

Agent wrongly identify stack traces line for Typescript

Open IzioDev opened this issue 5 years ago • 2 comments

Describe the bug

The agent does capture stack trace but it wrongly claims that the line is 299 when it's 364 actually.

I first though it was a source map issue, but we do have the comment on the last line with a valid source map.

To Reproduce

Create a NestJS app, then install the apm agent and capture error in a error interceptor.

Expected behavior

We expect the stack trace to be good.

Environment (please complete the following information)

  • OS: Linux
  • Node.js version: 13.0
  • APM Server version: 7.5.1 (we just updated it)
  • Agent version: "elastic-apm-node": "^3.3.0"

How are you starting the agent? (please tick one of the boxes)

  • [ ] Calling agent.start() directly (e.g. require('elastic-apm-node').start(...))

Additional context

Our stack trace (on stdout):

webhook_1          | GraphQLError: GraphQL Error
webhook_1          |     at GraphQLService.handleErrors (/usr/src/app/src/common/graphql/graphql.service.ts:14:21)
webhook_1          |     at BackendService.<anonymous> (/usr/src/app/src/backend/backend.service.ts:360:25)
webhook_1          |     at Generator.next (<anonymous>)
webhook_1          |     at fulfilled (/usr/src/app/src/backend/backend.service.ts:14:58)
webhook_1          |     at processTicksAndRejections (internal/process/task_queues.js:97:5) {

the stack trace (on kibana) :

src/common/graphql/graphql.service.ts in handleErrors at line 22
src/backend/backend.service.ts in BackendService.<anonymous> at line 299
src/backend/backend.service.ts in fulfilled at line 14
internal/process/task_queues.js in processTicksAndRejections at line 97

my package.json:

"start:dev": "nodemon",

my nodemon.json:

{
  "watch": ["src"],
  "ext": "ts",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "ts-node -r tsconfig-paths/register -r source-map-support/register src/main.ts -- --async-stack-traces"
}

my tsconfig.json:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./"
  },
  "exclude": ["node_modules"]
}

IzioDev avatar Feb 07 '20 14:02 IzioDev

Types are a nightmare on this project...

imsergiobernal avatar Feb 21 '20 21:02 imsergiobernal

It's not types theirself the issue, it's the stack trace I have on Kibana APM. More specific, the line number, apm take the js line number and not the ts line number.

IzioDev avatar Feb 22 '20 09:02 IzioDev