Skip to content

Commit 5c4ec5f

Browse files
fix: Use correct flag for server tracing (#14250)
* fix: Use correct flag for server tracing * changeset * docs-and-error * changeset * unit tests * typo
1 parent 6e20d6b commit 5c4ec5f

File tree

6 files changed

+18
-4
lines changed

6 files changed

+18
-4
lines changed

.changeset/ready-points-clap.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
fix: use correct flag for server tracing

.changeset/whole-sloths-visit.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
chore: Better docs and error message for missing `@opentelemetry/api` dependency

documentation/docs/30-advanced/68-observability.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,7 @@ sdk.start();
9494
```
9595
9696
Now, server-side requests will begin generating traces, which you can view in Jaeger's web console at [localhost:16686](http://localhost:16686).
97+
98+
## `@opentelemetry/api`
99+
100+
SvelteKit uses `@opentelemetry/api` to generate its spans. This is declared as an optional peer dependency so that users not needing traces see no impact on install size or runtime performance. In most cases, if you're configuring your application to collect SvelteKit's spans, you'll end up installing a library like `@opentelemetry/sdk-node` or `@vercel/otel`, which in turn depend on `@opentelemetry/api`, which will satisfy SvelteKit's dependency as well. If you see an error from SvelteKit telling you it can't find `@opentelemetry/api`, it may just be because you haven't set up your trace collection yet. If you _have_ done that and are still seeing the error, you can install `@opentelemetry/api` yourself.

packages/kit/src/exports/vite/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ async function kit({ svelte_config }) {
339339
__SVELTEKIT_EMBEDDED__: s(kit.embedded),
340340
__SVELTEKIT_EXPERIMENTAL__REMOTE_FUNCTIONS__: s(kit.experimental.remoteFunctions),
341341
__SVELTEKIT_CLIENT_ROUTING__: s(kit.router.resolution === 'client'),
342-
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.instrumentation.server),
342+
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.tracing.server),
343343
__SVELTEKIT_PAYLOAD__: new_config.build.ssr
344344
? '{}'
345345
: `globalThis.__sveltekit_${version_hash}`
@@ -355,7 +355,7 @@ async function kit({ svelte_config }) {
355355
__SVELTEKIT_EMBEDDED__: s(kit.embedded),
356356
__SVELTEKIT_EXPERIMENTAL__REMOTE_FUNCTIONS__: s(kit.experimental.remoteFunctions),
357357
__SVELTEKIT_CLIENT_ROUTING__: s(kit.router.resolution === 'client'),
358-
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.instrumentation.server),
358+
__SVELTEKIT_SERVER_TRACING_ENABLED__: s(kit.experimental.tracing.server),
359359
__SVELTEKIT_PAYLOAD__: 'globalThis.__sveltekit_dev'
360360
};
361361

packages/kit/src/runtime/telemetry/otel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ if (__SVELTEKIT_SERVER_TRACING_ENABLED__) {
1515
})
1616
.catch(() => {
1717
throw new Error(
18-
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available. Have you installed it?'
18+
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available. This error will likely resolve itself when you set up your tracing instrumentation in `instrumentation.server.js`. For more information, see https://svelte.dev/docs/kit/observability#opentelemetry-api'
1919
);
2020
});
2121
}

packages/kit/src/runtime/telemetry/otel.missing.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ vi.mock('@opentelemetry/api', () => {
1111
test('otel should throw an error when tracing is enabled but @opentelemetry/api is not available', async () => {
1212
const { otel } = await import('./otel.js');
1313
await expect(otel).rejects.toThrow(
14-
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available. Have you installed it?'
14+
'Tracing is enabled (see `config.kit.experimental.instrumentation.server` in your svelte.config.js), but `@opentelemetry/api` is not available. This error will likely resolve itself when you set up your tracing instrumentation in `instrumentation.server.js`. For more information, see https://svelte.dev/docs/kit/observability#opentelemetry-api'
1515
);
1616
});

0 commit comments

Comments
 (0)