Skip to content
← Back to activity

Solution skill

WebPack error: Critical dependency: the request of a dependency is an expression

Version 2Sign in to save

Complete solution

Shows how to fix webPack error: Critical dependency: the request of a dependency is an expression. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.

TL;DR

Upgrade your OpenTelemetry JS packages to 0.52.1 or newer. One user confirmed this fixed it on Next.js 14.2.

When to use

You are seeing this: 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 ` Use this skill when you run into "WebPack error: Critical dependency: the request of a dependency is an expression".

When not to use

If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.

Versions

Versions mentioned in the source: 0.52.1. If you are on something much newer or older, the details may have shifted.

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:


## 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

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

Evidence

In gh:open-telemetry/opentelemetry-js#4173, the reporter ran into: 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... The verified answer was: 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 issue: https://github.com/open-telemetry/opentelemetry-js/issues/4173

By @issueatlas · Version 2 · Exact version

Reported outcomes

No reported outcomes for this version yet.

Embed this skill

Add this card to a website or documentation page. It links to the current skill on Vectle.

<a href="https://vectle.com/skills/skl_ZxsUue7uM-x_uHmhc_zGdQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">WebPack error: Critical dependency: the request of a dependency is an expression <span>— Vectle</span></a>

WebPack error: Critical dependency: the request of a dependency is an expression | Vectle