Skip to content

Commit 3efc842

Browse files
committed
Fix next/server apit push alias for ESM pkg (#61721)
We have a modularize imports config for `next/server` before, which will transform the `next/server` imports to directly import from the actual file, for instance: `import { NextRequest } from 'next/server'` will become `import { NextRequest } from 'next/dist/server/web/exports/next-request'`, where the NextRequest is exported as default export. This is fine in most case until you're using a ESM pkg, then it will be resolved as `{ default: NextRequest }` according to the spec. Since it's a ESM import to a CJS module in `next/dist`. Since we already have the ESM alias introduced in #59852 , this can handle the case more properly. Remove the modularize imports config for `next/server`, use the ESM api alias instead. Migrate the cjs optimizer tests from middleware to a separate endpoint `/cjs/server`. As now ESM imports for next/server are not going to get tree-shaken in dev, but since we don't have image response there it's still fine. Closes NEXT-2376 Closes NEXT-2374
1 parent 179d14e commit 3efc842

File tree

20 files changed

+47
-42
lines changed

20 files changed

+47
-42
lines changed

packages/next/server.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@ const serverExports = {
99
.userAgentFromString,
1010
userAgent: require('next/dist/server/web/spec-extension/user-agent')
1111
.userAgent,
12-
}
13-
14-
if (typeof URLPattern !== 'undefined') {
15-
// eslint-disable-next-line no-undef
16-
serverExports.URLPattern = URLPattern
12+
URLPattern: require('next/dist/server/web/spec-extension/url-pattern')
13+
.URLPattern,
1714
}
1815

1916
// https://nodejs.org/api/esm.html#commonjs-namespaces

packages/next/src/build/create-compiler-aliases.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ export function createNextApiEsmAliases() {
205205
navigation: 'next/dist/api/navigation',
206206
headers: 'next/dist/api/headers',
207207
og: 'next/dist/api/og',
208+
server: 'next/dist/api/server',
208209
// pages api
209210
document: 'next/dist/api/document',
210211
app: 'next/dist/api/app',

packages/next/src/server/config.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,9 +831,6 @@ function assignDefaults(
831831
lodash: {
832832
transform: 'lodash/{{member}}',
833833
},
834-
'next/server': {
835-
transform: 'next/dist/server/web/exports/{{ kebabCase member }}',
836-
},
837834
}
838835

839836
const userProvidedOptimizePackageImports =

packages/next/src/server/web/exports/image-response.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
// Alias index file of next/server for edge runtime for tree-shaking purpose
22

3-
export { default as ImageResponse } from './image-response'
4-
export { default as NextRequest } from './next-request'
5-
export { default as NextResponse } from './next-response'
6-
export { default as userAgent } from './user-agent'
7-
export { default as userAgentFromString } from './user-agent-from-string'
8-
export { default as URLPattern } from './url-pattern'
3+
export { ImageResponse } from '../spec-extension/image-response'
4+
export { NextRequest } from '../spec-extension/request'
5+
export { NextResponse } from '../spec-extension/response'
6+
export { userAgent, userAgentFromString } from '../spec-extension/user-agent'
7+
export { URLPattern } from '../spec-extension/url-pattern'

packages/next/src/server/web/exports/next-request.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/next/src/server/web/exports/next-response.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/next/src/server/web/exports/revalidate-path.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/next/src/server/web/exports/revalidate-tag.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

packages/next/src/server/web/exports/unstable-cache.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)