Skip to content

Commit d28f527

Browse files
committed
feat: use new functions API
1 parent a7bbce0 commit d28f527

File tree

1 file changed

+22
-40
lines changed

1 file changed

+22
-40
lines changed

src/templates/handler.cts

Lines changed: 22 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
import http from 'node:http'
1+
import { IncomingMessage, ServerResponse } from 'node:http'
22

3-
import type { Handler, HandlerEvent, HandlerContext } from '@netlify/functions'
4-
// @ts-ignore
5-
import { Bridge } from '@vercel/node-bridge/bridge'
3+
import type { Context } from '@netlify/functions'
64
// @ts-ignore
75
import { getRequestHandlers } from 'next/dist/server/lib/start-server.js'
86

@@ -13,45 +11,29 @@ process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(requiredServerFile
1311

1412
process.chdir(__dirname)
1513

16-
let bridge: Bridge
17-
18-
export const handler: Handler = async function (event: HandlerEvent, context: HandlerContext) {
19-
if (!bridge) {
20-
// let Next.js initialize and create the request handler
21-
const [nextHandler] = await getRequestHandlers({
22-
port: 3000,
23-
hostname: 'localhost',
24-
dir: __dirname,
25-
isDev: false,
26-
})
27-
28-
// create a standard HTTP server that will receive
29-
// requests from the bridge and send them to Next.js
30-
const server = http.createServer(async (req, res) => {
31-
try {
32-
console.log('Next server request:', req.url)
33-
await nextHandler(req, res)
34-
} catch (error) {
35-
console.error(error)
36-
res.statusCode = 500
37-
res.end('Internal Server Error')
38-
}
39-
})
40-
41-
bridge = new Bridge(server)
42-
bridge.listen()
14+
// eslint-disable-next-line import/no-anonymous-default-export, @typescript-eslint/no-unused-vars
15+
export default async (request: IncomingMessage, context: Context) => {
16+
// let Next.js initialize and create the request handler
17+
const [nextHandler] = await getRequestHandlers({
18+
port: 3000,
19+
hostname: 'localhost',
20+
dir: __dirname,
21+
isDev: false,
22+
})
23+
24+
const response = new ServerResponse(request)
25+
26+
try {
27+
console.log('Next server request:', request.url)
28+
await nextHandler(request, response)
29+
} catch (error) {
30+
console.error(error)
31+
response.statusCode = 500
32+
response.end('Internal Server Error')
4333
}
4434

45-
// pass the AWS lambda event and context to the bridge
46-
const { headers, ...result } = await bridge.launcher(event, context)
47-
4835
// log the response from Next.js
49-
const response = { headers, statusCode: result.statusCode }
5036
console.log('Next server response:', JSON.stringify(response, null, 2))
5137

52-
return {
53-
...result,
54-
headers,
55-
isBase64Encoded: result.encoding === 'base64',
56-
}
38+
return response
5739
}

0 commit comments

Comments
 (0)