From 5e24e283189ca85868cb45e43584454acccd7159 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Mon, 11 Dec 2023 11:11:59 +0530 Subject: [PATCH] fix(ext/node): ServerResponse getHeader() return undefined (#21525) Matches Node's return type. Next.js check for `if (header === undefined)`: https://github.com/vercel/next.js/blob/e02fe314dcd0ae614c65b505c6daafbdeebb920e/packages/next/src/server/base-http/node.ts#L93 --- cli/tests/unit_node/http_test.ts | 21 +++++++++++++++++++++ ext/node/polyfills/http.ts | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cli/tests/unit_node/http_test.ts b/cli/tests/unit_node/http_test.ts index c46a3de41c..5285d8e23e 100644 --- a/cli/tests/unit_node/http_test.ts +++ b/cli/tests/unit_node/http_test.ts @@ -874,3 +874,24 @@ Deno.test("[node/http] node:http request.setHeader(header, null) doesn't throw", req.destroy(); } }); + +Deno.test("[node/http] ServerResponse getHeader", async () => { + const { promise, resolve } = Promise.withResolvers(); + const server = http.createServer((_req, res) => { + res.setHeader("foo", "bar"); + assertEquals(res.getHeader("foo"), "bar"); + assertEquals(res.getHeader("ligma"), undefined); + res.end("Hello World"); + }); + + server.listen(async () => { + const { port } = server.address() as { port: number }; + const res = await fetch(`http://localhost:${port}`); + assertEquals(await res.text(), "Hello World"); + server.close(() => { + resolve(); + }); + }); + + await promise; +}); diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts index 27fc577c0b..d458541628 100644 --- a/ext/node/polyfills/http.ts +++ b/ext/node/polyfills/http.ts @@ -1394,7 +1394,7 @@ export class ServerResponse extends NodeWritable { } getHeader(name: string) { - return this.#headers.get(name); + return this.#headers.get(name) ?? undefined; } removeHeader(name: string) { return this.#headers.delete(name);