Skip to content

Commit d66117b

Browse files
committed
fix: emit handler as ESM for functions v2
1 parent d28f527 commit d66117b

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/helpers/functions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { HANDLER_DIR, HANDLER_NAME, HANDLER_URL, __dirname } from './constants.j
1111
export const createHandlerFunction = (publishDir: string, config: NetlifyConfig) => {
1212
emptyDirSync(HANDLER_DIR)
1313

14-
copySync(`${__dirname}/../templates/handler.cjs`, `${HANDLER_DIR}/${HANDLER_NAME}.js`)
14+
copySync(`${__dirname}/../templates/handler.js`, `${HANDLER_DIR}/${HANDLER_NAME}.mjs`)
1515
copySync(`${__dirname}/../../node_modules/@vercel/node-bridge`, `${HANDLER_DIR}/node_modules/@vercel/node-bridge`)
1616
copySync(`${publishDir}/standalone/.next`, `${HANDLER_DIR}/.next`)
1717
copySync(`${publishDir}/standalone/node_modules`, `${HANDLER_DIR}/node_modules`)
@@ -21,7 +21,7 @@ export const createHandlerFunction = (publishDir: string, config: NetlifyConfig)
2121
config.functions[HANDLER_NAME] ||= {}
2222
config.functions[HANDLER_NAME].node_bundler = 'none'
2323
config.functions[HANDLER_NAME].included_files ||= []
24-
config.functions[HANDLER_NAME].included_files.push(`${HANDLER_DIR}/${HANDLER_NAME}.js`)
24+
config.functions[HANDLER_NAME].included_files.push(`${HANDLER_DIR}/${HANDLER_NAME}.mjs`)
2525
config.functions[HANDLER_NAME].included_files.push(`${HANDLER_DIR}/.next/**/*`)
2626
config.functions[HANDLER_NAME].included_files.push(`${HANDLER_DIR}/node_modules/**/*`)
2727

src/templates/handler.cts renamed to src/templates/handler.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1+
import { createRequire } from 'module'
12
import { IncomingMessage, ServerResponse } from 'node:http'
3+
import { fileURLToPath } from 'node:url'
24

35
import type { Context } from '@netlify/functions'
4-
// @ts-ignore
5-
import { getRequestHandlers } from 'next/dist/server/lib/start-server.js'
66

7-
// @ts-ignore
8-
import requiredServerFiles from './.next/required-server-files.json'
7+
const require = createRequire(import.meta.url)
8+
const { getRequestHandlers } = require('next/dist/server/lib/start-server.js')
9+
10+
// eslint-disable-next-line import/no-unresolved
11+
const requiredServerFiles = require('./.next/required-server-files.json')
912

1013
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(requiredServerFiles.config)
1114

15+
const __dirname = fileURLToPath(new URL('.', import.meta.url))
16+
1217
process.chdir(__dirname)
1318

1419
// eslint-disable-next-line import/no-anonymous-default-export, @typescript-eslint/no-unused-vars
15-
export default async (request: IncomingMessage, context: Context) => {
20+
export default async (request: Request, context: Context) => {
1621
// let Next.js initialize and create the request handler
1722
const [nextHandler] = await getRequestHandlers({
1823
port: 3000,

0 commit comments

Comments
 (0)