Skip to content

Commit 1f993e2

Browse files
bartlomiejuclaude
andcommitted
feat: warn on outdated Deno version in dev server (#3489)
Adds a version check to the dev server startup that prints a yellow warning when running Deno < 2.1.0, with an upgrade hint. This helps users who get cryptic errors due to an outdated Deno installation. Closes #3489 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 895bcac commit 1f993e2

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

packages/fresh/src/app.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { trace } from "@opentelemetry/api";
22

33
import { DENO_DEPLOYMENT_ID } from "@fresh/build-id";
44
import * as colors from "@std/fmt/colors";
5+
import * as semver from "@std/semver";
56
import type { MaybeLazyMiddleware, Middleware } from "./middlewares/mod.ts";
67
import { Context } from "./context.ts";
78
import { mergePath, type Method, UrlPatternRouter } from "./router.ts";
@@ -61,6 +62,8 @@ const DEFAULT_ERROR_HANDLER = async <State>(ctx: Context<State>) => {
6162
return new Response("Internal server error", { status: 500 });
6263
};
6364

65+
const MIN_DENO_VERSION = "2.1.0";
66+
6467
export type ListenOptions =
6568
& Partial<
6669
Deno.ServeTcpOptions & Deno.TlsCertifiedKeyPem
@@ -116,6 +119,31 @@ export function createOnListen(
116119
// deno-lint-ignore no-console
117120
console.log(` ${remoteLabel} ${remoteAddress}\n`);
118121
}
122+
123+
// Warn if Deno version is outdated
124+
try {
125+
if (
126+
semver.lessThan(
127+
semver.parse(Deno.version.deno),
128+
semver.parse(MIN_DENO_VERSION),
129+
)
130+
) {
131+
// deno-lint-ignore no-console
132+
console.log(
133+
colors.yellow(
134+
` Warning: Deno ${MIN_DENO_VERSION}+ is recommended. You're on ${Deno.version.deno}.`,
135+
),
136+
);
137+
// deno-lint-ignore no-console
138+
console.log(
139+
colors.yellow(" To update, run: deno upgrade"),
140+
);
141+
// deno-lint-ignore no-console
142+
console.log();
143+
}
144+
} catch {
145+
// Ignore version parse errors
146+
}
119147
};
120148
}
121149

0 commit comments

Comments
 (0)