1
- import http from 'node:http'
1
+ import { IncomingMessage , ServerResponse } from 'node:http'
2
2
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'
6
4
// @ts -ignore
7
5
import { getRequestHandlers } from 'next/dist/server/lib/start-server.js'
8
6
@@ -13,45 +11,29 @@ process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(requiredServerFile
13
11
14
12
process . chdir ( __dirname )
15
13
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' )
43
33
}
44
34
45
- // pass the AWS lambda event and context to the bridge
46
- const { headers, ...result } = await bridge . launcher ( event , context )
47
-
48
35
// log the response from Next.js
49
- const response = { headers, statusCode : result . statusCode }
50
36
console . log ( 'Next server response:' , JSON . stringify ( response , null , 2 ) )
51
37
52
- return {
53
- ...result ,
54
- headers,
55
- isBase64Encoded : result . encoding === 'base64' ,
56
- }
38
+ return response
57
39
}
0 commit comments