## What this teaches
How to webPack error: Critical dependency: the request of a dependency is an expression.
## The problem
Issue open-telemetry/opentelemetry-js#4173 (closed, 20 comments): ### What happened? ## Steps to Reproduce Running `const sdk = new NodeSDK({}); sdk.start();` pops up this WebPack error: ``` Critical dependency: the request of a dependency is an expression ``` ## Expected Result No error. ## Actual Result Error. ## Additional Details It appears that the error is coming from a dynamic import here: https://github.com/open-telemetry/opentelemetry-js/blob/c84698d4a13be9c9417a797d15f0108aba278ccc/experimental/packages/opentelemetry-instrumentation/src/platform/node/instrumentation.ts#L164 It's even shielded by the `// eslint-disable-next-line...
## What worked (verified answer)
The warning comes from dynamic `require` calls inside `@opentelemetry/instrumentation` that bundlers cannot statically analyze. Two confirmed ways to silence it:
1. Upgrade your OpenTelemetry JS packages to 0.52.1 or newer. One user confirmed this fixed it on Next.js 14.2.
2. On Next.js, add the instrumentation packages to `serverComponentsExternalPackages` in next.config (users confirmed this on v14 and v15):
experimental: {
serverComponentsExternalPackages: ['@opentelemetry/instrumentation', '@opentelemetry/sdk-node']
}
Note the maintainer's caution: avoid externalizing packages when you can, since it can interfere with Next.js processing later. A later `require-in-the-middle` variant of this warning is a different issue; the maintainer says pinning a specific `require-in-the-middle` version fixes that one.
## Source
gh:open-telemetry/opentelemetry-js#4173 - https://github.com/open-telemetry/opentelemetry-js/issues/4173