opentelemetry-js-contrib: dependency version mismatch in `instrumentation-express`
What version of OpenTelemetry are you using?
@opentelemetry/api
: 1.1.0
@opentelemetry/sdk-node
: 0.29.0
@opentelemetry/instrumentation-express
: 0.29.0
What version of Node are you using?
16.15.1
What did you do?
import the three packages above and then add ExpressInstrumentation
to the instrumentations list when initializing NodeSDK
.
What did you expect to see?
No errors
What did you see instead?
Typescript failed to compile:
src/main.ts:37:5 - error TS2322: Type 'ExpressInstrumentation' is not assignable to type 'InstrumentationOption'.
Type 'ExpressInstrumentation' is not assignable to type 'Instrumentation'.
Types of property 'setMeterProvider' are incompatible.
Type '(meterProvider: import("D:/code/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider) => void' is not assignable to type '(meterProvider: import("D:/code/node_modules/@opentelemetry/sdk-metrics-base/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider) => void'.
Types of parameters 'meterProvider' and 'meterProvider' are incompatible.
Type 'import("D:/code/node_modules/@opentelemetry/sdk-metrics-base/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider' is not assignable to type 'import("D:/code/node_modules/@opentelemetry/api-metrics/build/src/types/MeterProvider").MeterProvider'.
The types of 'getMeter(...).createObservableGauge' are incompatible between these types.
Type '(name: string, options?: MetricOptions | undefined) => Observable' is not assignable to type '(name: string, callback: ObservableCallback, options?: MetricOptions | undefined) => void'.
Types of parameters 'options' and 'callback' are incompatible.
Type 'ObservableCallback' has no properties in common with type 'MetricOptions'.
Additional context
Upon investigating my package-lock.json I found that @opentelemetry/instrumentation-express@0.29.0
imports @opentelemetry/istrumentation@^0.28.0
which creates a version mismatch (0.29.0 vs 0.28.0). The compilation error comes from my dependency tree having two different versions of @opentelemetry/api-metrics
: 0.28.0 and 0.29.0.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 16 (11 by maintainers)
yes, the correct solution would be to reduce the coupling by introducing stable interfaces for everything. The short term solution would be releasing all these packages in lock step - even if some of them don’t have any new commits, release a new version just so they’re always in sync.