nestjs-otel: Package broken with newest opentelemetry dependencies

When using the latest opentelementy packages (0.27.0), the Nest application fails to start with the following error:

/home/node/app/node_modules/nestjs-otel/src/metrics/metric-data.ts:27
      const valueRecorder = meter.createValueRecorder(name, options);
                                  ^
TypeError: meter.createValueRecorder is not a function
    at getOrCreateValueRecorder (/home/node/app/node_modules/nestjs-otel/src/metrics/metric-data.ts:27:35)
    at MetricService.getOrCreateValueRecorder (/home/node/app/node_modules/nestjs-otel/src/metrics/metric.service.ts:26:36)
    at MetricService.getValueRecorder (/home/node/app/node_modules/nestjs-otel/src/metrics/metric.service.ts:20:17)
    at new ApiMetricsMiddleware (/home/node/app/node_modules/nestjs-otel/src/middleware/api-metrics.middleware.ts:90:47)
    at Injector.instantiateClass (/home/node/app/node_modules/@nestjs/core/injector/injector.js:301:19)
    at callback (/home/node/app/node_modules/@nestjs/core/injector/injector.js:48:41)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Injector.resolveConstructorParams (/home/node/app/node_modules/@nestjs/core/injector/injector.js:124:24)
    at async Injector.loadInstance (/home/node/app/node_modules/@nestjs/core/injector/injector.js:52:9)
    at async Injector.loadMiddleware (/home/node/app/node_modules/@nestjs/core/injector/injector.js:61:9)

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 8
  • Comments: 18 (6 by maintainers)

Most upvoted comments

Hello. I am also getting this error:

opentelemetry-node-metrics@1.1.0/node_modules/opentelemetry-node-metrics/metrics/version.js:17
  }).bind(version).add(1)
     ^
TypeError: meter.createUpDownCounter(...).bind is not a function

From what I understood this was fixed here in the opentelemetry-node-metrics.. which is already the version on the main branch on this repo, but not in the latest released tag.

@pragmaticivan Any chance to create a new release please?

That’s actually great news 😂 I will try to patch that up this weekend, It will require a major version though. I’ve been keeping track of this release for a while but some packages might be moved somewhere else FYI.

Ref: https://github.com/open-telemetry/opentelemetry-js/issues/2480

For me, the below worked.

It seems to be an issue with the old version(1.1.0) of opentelemetry-node-metrics package being used. Forcing the package manager to install the latest version of opentelemetry-node-metrics did the trick for me.

add the following in package.json image

btw, I am using yarn. This won’t work for npm.

npm users: https://stackoverflow.com/questions/15806152/how-do-i-override-nested-npm-dependency-versions yarn users: https://stackoverflow.com/questions/40226639/how-do-i-override-nested-dependencies-with-yarn

@pragmaticivan How can I help resolve this issue? Should I update the dependency and raise a pr, or do you have something else in mind?