Skip to content

Commit 708688d

Browse files
authoredJul 6, 2022
[edge] enable edge compiler source maps by default (#38365)
since we no longer have a single compiler for browser & edge, we can enable source map generation by default for all edge functions. This would make it much easier to debug and understand what's happening when deploying to prod as the log statements will show us the actual code location instead of post bundling and minified location. This also removes the experimental flag as it's not needed anymore.
1 parent f396988 commit 708688d

File tree

6 files changed

+37
-97
lines changed

6 files changed

+37
-97
lines changed
 

‎packages/next/build/webpack-config.ts

-6
Original file line numberDiff line numberDiff line change
@@ -1449,12 +1449,6 @@ export default async function getBaseWebpackConfig(
14491449
].filter(Boolean),
14501450
},
14511451
plugins: [
1452-
...(!dev &&
1453-
isEdgeServer &&
1454-
!!config.experimental.middlewareSourceMaps &&
1455-
!config.productionBrowserSourceMaps
1456-
? require('./webpack/plugins/middleware-source-maps-plugin').getMiddlewareSourceMapPlugins()
1457-
: []),
14581452
dev && isClient && new ReactRefreshWebpackPlugin(webpack),
14591453
// Makes sure `Buffer` and `process` are polyfilled in client and flight bundles (same behavior as webpack 4)
14601454
(isClient || isEdgeServer) &&

‎packages/next/build/webpack/config/blocks/base.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@ export const base = curry(function base(
3232
config.devtool = 'eval-source-map'
3333
}
3434
} else {
35-
// Enable browser sourcemaps:
36-
if (ctx.productionBrowserSourceMaps && ctx.isClient) {
35+
if (
36+
ctx.isEdgeRuntime ||
37+
// Enable browser sourcemaps:
38+
(ctx.productionBrowserSourceMaps && ctx.isClient)
39+
) {
3740
config.devtool = 'source-map'
3841
} else {
3942
config.devtool = false

‎packages/next/build/webpack/plugins/middleware-source-maps-plugin.ts

-37
This file was deleted.

‎packages/next/server/config-shared.ts

-2
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ export interface ExperimentalConfig {
119119
unoptimized?: boolean
120120
allowFutureImage?: boolean
121121
}
122-
middlewareSourceMaps?: boolean
123122
modularizeImports?: Record<
124123
string,
125124
{
@@ -549,7 +548,6 @@ export const defaultConfig: NextConfig = {
549548
disablePostcssPresetEnv: undefined,
550549
amp: undefined,
551550
urlImports: undefined,
552-
middlewareSourceMaps: undefined,
553551
modularizeImports: undefined,
554552
},
555553
}

‎test/.stats-app/stats-config.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ const clientGlobs = [
3333
},
3434
{
3535
name: 'Middleware size',
36-
globs: ['.next/server/middleware*', '.next/server/edge-runtime-webpack.js'],
36+
globs: [
37+
'.next/server/middleware*.js',
38+
'.next/server/edge-runtime-webpack.js',
39+
],
3740
},
3841
]
3942

‎test/production/generate-middleware-source-maps/index.test.ts

+28-49
Original file line numberDiff line numberDiff line change
@@ -3,68 +3,47 @@ import { NextInstance } from 'test/lib/next-modes/base'
33
import fs from 'fs-extra'
44
import path from 'path'
55

6-
const files = {
7-
'pages/index.js': `
8-
export default function () { return <div>Hello, world!</div> }
9-
`,
10-
'middleware.js': `
11-
import { NextResponse } from "next/server";
12-
export default function middleware() {
13-
return NextResponse.next();
14-
}
15-
`,
16-
}
17-
18-
describe('experimental.middlewareSourceMaps: true', () => {
6+
describe('Middleware source maps', () => {
197
let next: NextInstance
208

21-
const nextConfig = { experimental: { middlewareSourceMaps: true } }
22-
23-
afterEach(() => next.destroy())
24-
25-
it('generates a source map', async () => {
26-
next = await createNext({ nextConfig, files })
27-
28-
const middlewarePath = path.resolve(
29-
next.testDir,
30-
'.next/server/middleware.js'
31-
)
32-
expect(await fs.pathExists(middlewarePath)).toEqual(true)
33-
expect(await fs.pathExists(`${middlewarePath}.map`)).toEqual(true)
34-
})
35-
36-
it('generates a source map from src', async () => {
9+
beforeAll(async () => {
3710
next = await createNext({
38-
nextConfig,
39-
files: Object.fromEntries(
40-
Object.entries(files).map(([filename, content]) => [
41-
`src/${filename}`,
42-
content,
43-
])
44-
),
11+
files: {
12+
'pages/index.js': `
13+
export default function () { return <div>Hello, world!</div> }
14+
`,
15+
'pages/api/edge.js': `
16+
export const config = { runtime: 'experimental-edge' };
17+
export default function (req) {
18+
return new Response("Hello from " + req.url);
19+
}
20+
`,
21+
'middleware.js': `
22+
import { NextResponse } from "next/server";
23+
export default function middleware() {
24+
return NextResponse.next();
25+
}
26+
`,
27+
},
4528
})
29+
})
30+
afterAll(() => next.destroy())
4631

32+
it('generates a source map for Middleware', async () => {
4733
const middlewarePath = path.resolve(
4834
next.testDir,
49-
'.next/server/src/middleware.js'
35+
'.next/server/middleware.js'
5036
)
5137
expect(await fs.pathExists(middlewarePath)).toEqual(true)
5238
expect(await fs.pathExists(`${middlewarePath}.map`)).toEqual(true)
5339
})
54-
})
55-
56-
describe('experimental.middlewareSourceMaps: false', () => {
57-
let next: NextInstance
58-
59-
afterEach(() => next.destroy())
6040

61-
it('does not generate a source map', async () => {
62-
next = await createNext({ files })
63-
const middlewarePath = path.resolve(
41+
it('generates a source map for Edge API', async () => {
42+
const edgePath = path.resolve(
6443
next.testDir,
65-
'.next/server/middleware.js'
44+
'.next/server/pages/api/edge.js'
6645
)
67-
expect(await fs.pathExists(middlewarePath)).toEqual(true)
68-
expect(await fs.pathExists(`${middlewarePath}.map`)).toEqual(false)
46+
expect(await fs.pathExists(edgePath)).toEqual(true)
47+
expect(await fs.pathExists(`${edgePath}.map`)).toEqual(true)
6948
})
7049
})

0 commit comments

Comments
 (0)
Please sign in to comment.