Skip to content

Commit fedeeb0

Browse files
committed
refactor(@angular/build): update SSR Vite middleware to utilize the enhanced API
Updated the SSR Vite middleware to align with the latest API improvements
1 parent 13a3e43 commit fedeeb0

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

packages/angular/build/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ ts_library(
5656
module_root = "src/index.d.ts",
5757
deps = [
5858
"//packages/angular/ssr",
59+
"//packages/angular/ssr/node",
5960
"//packages/angular_devkit/architect",
6061
"@npm//@ampproject/remapping",
6162
"@npm//@angular/common",

packages/angular/build/src/tools/vite/middlewares/ssr-middleware.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import type { ɵgetOrCreateAngularServerApp as getOrCreateAngularServerApp } from '@angular/ssr';
1010
import type { ServerResponse } from 'node:http';
1111
import type { Connect, ViteDevServer } from 'vite';
12+
import { loadEsmModule } from '../../../utils/load-esm';
1213

1314
export function createAngularSSRMiddleware(
1415
server: ViteDevServer,
@@ -30,6 +31,9 @@ export function createAngularSSRMiddleware(
3031
const url = new URL(req.url, baseUrl);
3132

3233
(async () => {
34+
const { writeResponseToNodeResponse, createWebRequestFromNodeRequest } =
35+
await loadEsmModule<typeof import('@angular/ssr/node')>('@angular/ssr/node');
36+
3337
const { ɵgetOrCreateAngularServerApp } = (await server.ssrLoadModule('/main.server.mjs')) as {
3438
ɵgetOrCreateAngularServerApp: typeof getOrCreateAngularServerApp;
3539
};
@@ -46,20 +50,15 @@ export function createAngularSSRMiddleware(
4650
cachedAngularServerApp = angularServerApp;
4751
}
4852

49-
const response = await angularServerApp.render(
50-
new Request(url, { signal: AbortSignal.timeout(30_000) }),
51-
undefined,
52-
);
53-
54-
return response?.text();
55-
})()
56-
.then((content) => {
57-
if (typeof content !== 'string') {
58-
return next();
59-
}
53+
const webReq = new Request(createWebRequestFromNodeRequest(req), {
54+
signal: AbortSignal.timeout(30_000),
55+
});
56+
const webRes = await angularServerApp.render(webReq);
57+
if (!webRes) {
58+
return next();
59+
}
6060

61-
res.end(content);
62-
})
63-
.catch((error) => next(error));
61+
return writeResponseToNodeResponse(webRes, res);
62+
})().catch(next);
6463
};
6564
}

0 commit comments

Comments
 (0)