') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Since v9.17.0, peer dependencies issues have been introduced · Issue #16245 · getsentry/sentry-javascript · GitHub
Skip to content

Since v9.17.0, peer dependencies issues have been introduced #16245

Description

@EDM115

Is there an existing issue for this?

How do you use Sentry?

Sentry Saas (sentry.io)

Which SDK are you using?

@sentry/nextjs

SDK Version

9.17.0

Framework Version

Next 15.3.2

Link to Sentry event

No response

Reproduction Example/SDK Setup

No response

Steps to Reproduce

This issue is more likely to appear in monorepos as I found, but basically since the introduction of @fastify/otel, it clashes with @sentry/opentelemetry, both of them wanting different versions of @opentelemetry packages :

mkdir test&&cdtest
pnpm init
mkdir packages/node &&cd packages/node
pnpm init
pnpm add @sentry/node
cd ..\.. && mkdir services/next &&cd services/next
pnpm init
pnpm add @sentry/nextjs
cd ..\..
echo"packages: - services/* - packages/*"> pnpm-workspace.yaml
pnpm i

Expected Result

There should be no peer dependencies issues

Actual Result

PS C:\Users\EDM115\Desktop\test> pnpm i
Scope: all 3 workspace projects
Packages: +275++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 326, reused 275, downloaded 0, added 275, done
WARN Issues with peer dependencies found
services/next
└─┬ @sentry/nextjs 9.17.0
└─┬ @sentry/opentelemetry 9.17.0
├── ✕ unmet peer @opentelemetry/core@^1.30.1: found 2.0.0
└── ✕ unmet peer @opentelemetry/instrumentation@^0.57.1: found 0.200.0
╭ Warning ───────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Ignored build scripts: @sentry/cli, sharp. │
│ Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts. │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────────╯
Done in18.2s using pnpm v10.7.0
PS C:\Users\EDM115\Desktop\test> pnpm why -r @opentelemetry/core
Legend: production dependency, optional only, dev only
node@1.0.0 C:\Users\EDM115\Desktop\test\packages\node
dependencies:
@sentry/node 9.17.0
├─┬ @fastify/otel 0.6.0
│ └── @opentelemetry/core 2.0.0
├── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-amqplib 0.46.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-connect 0.43.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-express 0.47.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-fs 0.19.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-hapi 0.45.2
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-http 0.57.2
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-koa 0.47.1
│ └── @opentelemetry/core 1.30.1
└─┬ @opentelemetry/instrumentation-mongoose 0.46.1
└── @opentelemetry/core 1.30.1
next@1.0.0 C:\Users\EDM115\Desktop\test\services\next
dependencies:
@sentry/nextjs 9.17.0
└─┬ @sentry/node 9.17.0
├─┬ @fastify/otel 0.6.0
│ └── @opentelemetry/core 2.0.0
├── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-amqplib 0.46.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-connect 0.43.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-express 0.47.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-fs 0.19.1
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-hapi 0.45.2
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-http 0.57.2
│ └── @opentelemetry/core 1.30.1
├─┬ @opentelemetry/instrumentation-koa 0.47.1
│ └── @opentelemetry/core 1.30.1
└─┬ @opentelemetry/instrumentation-mongoose 0.46.1
└── @opentelemetry/core 1.30.1
PS C:\Users\EDM115\Desktop\test> pnpm why -r @opentelemetry/instrumentation
Legend: production dependency, optional only, dev only
node@1.0.0 C:\Users\EDM115\Desktop\test\packages\node
dependencies:
@sentry/node 9.17.0
├─┬ @fastify/otel 0.6.0
│ └── @opentelemetry/instrumentation 0.200.0
├── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-amqplib 0.46.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-connect 0.43.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-dataloader 0.16.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-express 0.47.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-fs 0.19.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-generic-pool 0.43.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-graphql 0.47.1
│ └── @opentelemetry/instrumentation 0.57.2
└─┬ @opentelemetry/instrumentation-hapi 0.45.2
└── @opentelemetry/instrumentation 0.57.2
next@1.0.0 C:\Users\EDM115\Desktop\test\services\next
dependencies:
@sentry/nextjs 9.17.0
└─┬ @sentry/node 9.17.0
├─┬ @fastify/otel 0.6.0
│ └── @opentelemetry/instrumentation 0.200.0
├── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-amqplib 0.46.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-connect 0.43.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-dataloader 0.16.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-express 0.47.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-fs 0.19.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-generic-pool 0.43.1
│ └── @opentelemetry/instrumentation 0.57.2
├─┬ @opentelemetry/instrumentation-graphql 0.47.1
│ └── @opentelemetry/instrumentation 0.57.2
└─┬ @opentelemetry/instrumentation-hapi 0.45.2
└── @opentelemetry/instrumentation 0.57.2

Metadata

Metadata

Assignees

Projects

Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions