Skip to content

Commit 50ccb81

Browse files
committed
fix: tn/ moving Nicks try/catch to requirehooks
1 parent ebea86e commit 50ccb81

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

packages/runtime/src/templates/getHandler.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ const makeHandler = ({ conf, app, pageRoot, NextServer, staticManifest = [], mod
6060
// Next 13.4 conditionally uses different React versions and we need to make sure we use the same one
6161
overrideRequireHooks(conf)
6262
const NetlifyNextServer: NetlifyNextServerType = getNetlifyNextServer(NextServer)
63-
applyRequireHooks()
63+
applyRequireHooks(conf)
6464

6565
const ONE_YEAR_IN_SECONDS = 31536000
6666

@@ -108,24 +108,24 @@ const makeHandler = ({ conf, app, pageRoot, NextServer, staticManifest = [], mod
108108
const server = new Server(async (req, res) => {
109109
try {
110110
await requestHandler(req, res)
111-
} catch (error) {
111+
} catch {
112112
// This is a naive approach to fixing the experimental version of React not being set properly
113113
// in some scenarios. We have something more robust in the works, but for now this is good enough.
114-
if (
115-
error.message.includes(`[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './ server.edge' is not defined`)
116-
) {
117-
try {
118-
// eslint-disable-next-line no-underscore-dangle
119-
process.env.__NEXT_PRIVATE_PREBUNDLED_REACT = nextServer.getAppRouterReactVersion()
120-
await requestHandler(req, res)
121-
} catch (validError) {
122-
console.error(validError)
123-
throw new Error('Error handling request. See function logs for details.')
124-
}
125-
} else {
126-
console.error(error)
127-
throw new Error('Error handling request. See function logs for details.')
128-
}
114+
// if (
115+
// error.message.includes(`[ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './ server.edge' is not defined`)
116+
// ) {
117+
// try {
118+
// // eslint-disable-next-line no-underscore-dangle
119+
// process.env.__NEXT_PRIVATE_PREBUNDLED_REACT = nextServer.getAppRouterReactVersion()
120+
// await requestHandler(req, res)
121+
// } catch (validError) {
122+
// console.error(validError)
123+
// throw new Error('Error handling request. See function logs for details.')
124+
// }
125+
// } else {
126+
// console.error(error)
127+
// throw new Error('Error handling request. See function logs for details.')
128+
// }
129129
}
130130
})
131131
bridge = new Bridge(server)

packages/runtime/src/templates/requireHooks.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ const resolveRequireHooks = () => {
100100
})
101101
}
102102

103-
export const applyRequireHooks = () => {
103+
export const applyRequireHooks = (conf: NextConfig) => {
104104
// eslint-disable-next-line max-params, func-names
105105
;(mod as any)._resolveFilename = function (
106106
originalResolveFilename: typeof resolveFilename,
@@ -110,10 +110,18 @@ export const applyRequireHooks = () => {
110110
isMain: boolean,
111111
options: any,
112112
) {
113-
const reactMode = process.env.__NEXT_PRIVATE_PREBUNDLED_REACT || 'default'
113+
let reactMode = process.env.__NEXT_PRIVATE_PREBUNDLED_REACT || 'default'
114114
const resolvedRequest = hooks.get(reactMode)?.get(request) ?? request
115-
116-
return originalResolveFilename.call(mod, resolvedRequest, parent, isMain, options)
115+
try {
116+
return originalResolveFilename.call(mod, resolvedRequest, parent, isMain, options)
117+
} catch (error) {
118+
const e = error.code.toString()
119+
if (e === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
120+
process.env.__NEXT_PRIVATE_PREBUNDLED_REACT = conf.experimental.serverActions ? 'experimental' : 'next'
121+
reactMode = process.env.__NEXT_PRIVATE_PREBUNDLED_REAC
122+
return originalResolveFilename.call(mod, resolvedRequest, parent, isMain, options)
123+
}
124+
}
117125

118126
// We use `bind` here to avoid referencing outside variables to create potential memory leaks.
119127
}.bind(null, resolveFilename, requireHooks)

0 commit comments

Comments
 (0)