This repository has been archived by the owner on Jan 28, 2025. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(serverless-next.js): Fix the issue with TypeError hasHeader is no…
…t a function (#342) * Fix the issue with TypeError hasHeader is not a function When deploying to netlify or AWS (both depend on AWS-lambda) The SSR components (using `getServerSideProps` fails with the following error: ``` ERROR TypeError: res.hasHeader is not a function at sendPayload (/var/task/pages/test.js:5787:41) at renderReqToHTML (/var/task/pages/test.js:1773:13) at processTicksAndRejections (internal/process/task_queues.js:97:5) at async Module.render (/var/task/pages/test.js:1816:22) ``` This is caused by nextjs trying to use the default node `hasHeader` method here: https://github.com/zeit/next.js/blob/v9.3.1/packages/next/next-server/server/send-payload.ts#L25 This commit fix the issue reported here: vercel/next.js#11223 which I could verify also happening on our stack by adding the method that mimics the nodeJS method (using `res.getHeader(name)` internally wrapping it in boolean response) Previously fixed for next-aws-lambda in #329 * Fix the headers to always work with lower case Previously the following behaviour could be observed: ``` res.setHeader("X-CUSTOM", "VAL") res.getHeader("X-CUSTOM") => null res.hasHeader("X-CUSTOM") => false res.setHeader("x-custom", "val") res.getHeader("X-CUSTOM") => "val" res.hasHeader("X-CUSTOM") => true ``` There is no way of accessing a header that isn't set in lower case, This fixes the issue by always storing the header name as lower case, allowing a similar behaviour to node HTTP ResponseObject behaviour - https://nodejs.org/api/http.html#http_request_getheader_name - https://nodejs.org/api/http.html#http_request_removeheader_name - https://nodejs.org/api/http.html#http_request_setheader_name_value Previously fixed for next-aws-lambda in #331 * Update the npm package-lock
- Loading branch information