diff --git a/packages/angular/build/src/tools/vite/middlewares/component-middleware.ts b/packages/angular/build/src/tools/vite/middlewares/component-middleware.ts index 6110316773b3..0e02616cb384 100644 --- a/packages/angular/build/src/tools/vite/middlewares/component-middleware.ts +++ b/packages/angular/build/src/tools/vite/middlewares/component-middleware.ts @@ -6,11 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import type { Connect } from 'vite'; +import type { Connect, ViteDevServer } from 'vite'; +import { pathnameWithoutBasePath } from '../utils'; const ANGULAR_COMPONENT_PREFIX = '/@ng/component'; export function createAngularComponentMiddleware( + server: ViteDevServer, templateUpdates: ReadonlyMap, ): Connect.NextHandleFunction { return function angularComponentMiddleware(req, res, next) { @@ -18,7 +20,8 @@ export function createAngularComponentMiddleware( return; } - if (!req.url.startsWith(ANGULAR_COMPONENT_PREFIX)) { + const pathname = pathnameWithoutBasePath(req.url, server.config.base); + if (!pathname.includes(ANGULAR_COMPONENT_PREFIX)) { next(); return; diff --git a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts index 899c903658f1..c11c8cc7756d 100644 --- a/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/angular-memory-plugin.ts @@ -46,8 +46,11 @@ export async function createAngularMemoryPlugin( // Vite will resolve these these files example: // `file:///@ng/component?c=src%2Fapp%2Fapp.component.ts%40AppComponent&t=1737017253850` const sourcePath = fileURLToPath(source); - const { root } = parse(sourcePath); - const sourceWithoutRoot = normalizePath('/' + sourcePath.slice(root.length)); + const sourceWithoutRoot = sourcePath.startsWith(virtualProjectRoot) + ? normalizePath('/' + relative(virtualProjectRoot, sourcePath)) + : // TODO: remove once https://github.com/angular/angular/blob/4e6017a9f5cda389c5fbf4f2c1519ce1bba23e11/packages/compiler/src/render3/r3_hmr_compiler.ts#L57 + // is changed from `/@ng` to `./@ng/` + normalizePath('/' + sourcePath.slice(parse(sourcePath).root.length)); if (sourceWithoutRoot.startsWith(ANGULAR_PREFIX)) { const [, query] = source.split('?', 2); diff --git a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts index 27f40ff909d7..2e251285e989 100644 --- a/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts +++ b/packages/angular/build/src/tools/vite/plugins/setup-middlewares-plugin.ts @@ -88,7 +88,7 @@ export function createAngularSetupMiddlewaresPlugin( // Headers, assets and resources get handled first server.middlewares.use(createAngularHeadersMiddleware(server)); - server.middlewares.use(createAngularComponentMiddleware(templateUpdates)); + server.middlewares.use(createAngularComponentMiddleware(server, templateUpdates)); server.middlewares.use( createAngularAssetsMiddleware( server,