From 54e9ebcf237963c77b64ab0c2bbc7ba227ce81e8 Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 17 Apr 2026 12:00:20 +0000 Subject: [PATCH] fix(@angular-devkit/build-angular): fix app-shell route format and improve package resolution - In the `app-shell` builder, ensure the route URL has a leading slash. - In webpack helpers, use `createRequire` in `isPackageInstalled` to improve package resolution robustness. --- .../build_angular/src/builders/app-shell/index.ts | 3 ++- .../build_angular/src/tools/webpack/utils/helpers.ts | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts b/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts index 6a70ff1a60d2..759433ac7d76 100644 --- a/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/app-shell/index.ts @@ -86,10 +86,11 @@ async function _renderUniversal( localeDirectory, ); + const route = options.route; let html: string = await renderWorker.run({ serverBundlePath, document: indexHtml, - url: options.route, + url: route?.[0] === '/' ? route : '/' + route, }); // Overwrite the client index file. diff --git a/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts b/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts index 91579103adab..e359597ab45e 100644 --- a/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts +++ b/packages/angular_devkit/build_angular/src/tools/webpack/utils/helpers.ts @@ -8,6 +8,7 @@ import type { ObjectPattern } from 'copy-webpack-plugin'; import { createHash } from 'node:crypto'; +import { createRequire } from 'node:module'; import * as path from 'node:path'; import { globSync } from 'tinyglobby'; import type { Configuration, WebpackOptionsNormalized } from 'webpack'; @@ -314,7 +315,8 @@ export function getStatsOptions(verbose = false): WebpackStatsOptions { */ export function isPackageInstalled(root: string, name: string): boolean { try { - require.resolve(name, { paths: [root] }); + const resolve = createRequire(root + '/').resolve; + resolve(name); return true; } catch {