Skip to content

Commit 34bf0cc

Browse files
committed
fix: better error handling for next server imports
1 parent a2a1e58 commit 34bf0cc

File tree

2 files changed

+17
-14
lines changed

2 files changed

+17
-14
lines changed

src/templates/getHandler.js

+16-13
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,33 @@ const makeHandler =
77
() =>
88
// We return a function and then call `toString()` on it to serialise it as the launcher function
99
(conf, app) => {
10+
// This is just so nft knows about the page entrypoints
11+
try {
12+
// eslint-disable-next-line node/no-missing-require
13+
require.resolve('./pages.js')
14+
} catch {}
15+
1016
let NextServer
1117
try {
1218
// next >= 11.0.1. Yay breaking changes in patch releases!
1319
NextServer = require('next/dist/server/next-server').default
14-
} catch {
20+
} catch (error) {
21+
if (!error.message.includes("Cannot find module 'next/dist/server/next-server'")) {
22+
// A different error, so rethrow it
23+
throw error
24+
}
1525
// Probably an old version of next
1626
}
1727

18-
// This is just so nft knows about the page entrypoints
19-
try {
20-
// eslint-disable-next-line node/no-missing-require
21-
require.resolve('./pages.js')
22-
} catch {}
23-
2428
if (!NextServer) {
2529
try {
2630
// next < 11.0.1
2731
// eslint-disable-next-line node/no-missing-require, import/no-unresolved
2832
NextServer = require('next/dist/next-server/server/next-server').default
29-
} catch {
33+
} catch (error) {
34+
if (!error.message.includes("Cannot find module 'next/dist/server/next-server'")) {
35+
throw error
36+
}
3037
throw new Error('Could not find Next.js server')
3138
}
3239
}
@@ -66,11 +73,7 @@ const makeHandler =
6673
}
6774
}
6875

69-
if (
70-
multiValueHeaders['set-cookie'] &&
71-
multiValueHeaders['set-cookie'][0] &&
72-
multiValueHeaders['set-cookie'][0].includes('__prerender_bypass')
73-
) {
76+
if (multiValueHeaders['set-cookie']?.[0]?.includes('__prerender_bypass')) {
7477
delete multiValueHeaders.etag
7578
multiValueHeaders['cache-control'] = ['no-cache']
7679
}

test/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const onBuildHasRun = (netlifyConfig) =>
4242

4343
// Move .next from sample project to current directory
4444
const moveNextDist = async function () {
45-
await stubModules(['next', 'react', 'react-dom', 'sharp'])
45+
await stubModules(['next', 'sharp'])
4646
await copy(path.join(SAMPLE_PROJECT_DIR, '.next'), path.join(process.cwd(), '.next'))
4747
}
4848

0 commit comments

Comments
 (0)