diff --git a/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts b/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts index 102e1060198d..4dd44ba4caaf 100644 --- a/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts +++ b/packages/angular_devkit/build_angular/src/tools/esbuild/commonjs-checker.ts @@ -49,6 +49,11 @@ export function checkCommonJSModules( // using `provideHttpClient(withFetch())`. allowedRequests.add('xhr2'); + // Packages used by @angular/ssr. + // While critters is ESM it has a number of direct and transtive CJS deps. + allowedRequests.add('express'); + allowedRequests.add('critters'); + // Find all entry points that contain code (JS/TS) const files: string[] = []; for (const { entryPoint } of Object.values(metafile.outputs)) { @@ -76,8 +81,14 @@ export function checkCommonJSModules( if (!imported.original || seenFiles.has(imported.path)) { continue; } + seenFiles.add(imported.path); + // If the dependency is allowed ignore all other checks + if (allowedRequests.has(imported.original)) { + continue; + } + // Only check actual code files if (!isPathCode(imported.path)) { continue; @@ -141,11 +152,7 @@ function isPathCode(name: string): boolean { * @returns True, if specifier is potentially relative; false, otherwise. */ function isPotentialRelative(specifier: string): boolean { - if (specifier[0] === '.') { - return true; - } - - return false; + return specifier[0] === '.'; } /** diff --git a/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts b/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts index 8b87d237400a..8007986454f9 100644 --- a/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts +++ b/packages/angular_devkit/build_angular/src/utils/server-rendering/render-worker.ts @@ -28,7 +28,7 @@ export interface RenderOptions { const { outputFiles, document, inlineCriticalCss } = workerData as RenderWorkerData; /** Renders an application based on a provided options. */ -async function render(options: RenderOptions): Promise { +function render(options: RenderOptions): Promise { return renderPage({ ...options, outputFiles,