From 95aa9c0b5ac00146008aff8b38dbaa82ed37b182 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Mon, 23 Sep 2024 15:59:15 +0200 Subject: [PATCH 1/3] use require-resolve instead of hard-coded node modules folder --- packages/nextjs/src/config/webpack.ts | 3 ++- packages/utils/src/node.ts | 14 +++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/nextjs/src/config/webpack.ts b/packages/nextjs/src/config/webpack.ts index 8fbc94b42195..910b352f1345 100644 --- a/packages/nextjs/src/config/webpack.ts +++ b/packages/nextjs/src/config/webpack.ts @@ -332,7 +332,8 @@ export function constructWebpackConfigFunction( // Symbolication for dev-mode errors is done elsewhere. if (!isDev) { // eslint-disable-next-line @typescript-eslint/no-explicit-any - const { sentryWebpackPlugin } = loadModule('@sentry/webpack-plugin') as any; + const { sentryWebpackPlugin } = loadModule<{ sentryWebpackPlugin: any }>('@sentry/webpack-plugin') ?? {}; + if (sentryWebpackPlugin) { if (!userSentryOptions.sourcemaps?.disable) { // `hidden-source-map` produces the same sourcemaps as `source-map`, but doesn't include the `sourceMappingURL` diff --git a/packages/utils/src/node.ts b/packages/utils/src/node.ts index 39b4258eccc7..cfcf0b52692f 100644 --- a/packages/utils/src/node.ts +++ b/packages/utils/src/node.ts @@ -3,7 +3,9 @@ * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere. */ +import { DEBUG_BUILD } from './debug-build'; import { isBrowserBundle } from './env'; +import { logger } from './logger'; /** * Checks whether we're in the Node.js or Browser environment @@ -26,8 +28,9 @@ export function isNodeEnv(): boolean { */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function dynamicRequire(mod: any, request: string): any { + const resolvedPath = require.resolve(request); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - return mod.require(request); + return mod.require(resolvedPath); } /** @@ -49,14 +52,7 @@ export function loadModule(moduleName: string): T | undefined { try { mod = dynamicRequire(module, moduleName); } catch (e) { - // no-empty - } - - try { - const { cwd } = dynamicRequire(module, 'process'); - mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T; - } catch (e) { - // no-empty + DEBUG_BUILD && logger.error(`Unable to dynamically require ${moduleName}`); } return mod; From bd3633ba6fe8f83fd508d6140bf74dcaa85238a4 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 5 Nov 2024 12:07:18 +0100 Subject: [PATCH 2/3] try something else --- packages/utils/src/node.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/utils/src/node.ts b/packages/utils/src/node.ts index cfcf0b52692f..42a26989d199 100644 --- a/packages/utils/src/node.ts +++ b/packages/utils/src/node.ts @@ -28,9 +28,8 @@ export function isNodeEnv(): boolean { */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function dynamicRequire(mod: any, request: string): any { - const resolvedPath = require.resolve(request); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - return mod.require(resolvedPath); + return mod.require(request); } /** @@ -52,7 +51,16 @@ export function loadModule(moduleName: string): T | undefined { try { mod = dynamicRequire(module, moduleName); } catch (e) { - DEBUG_BUILD && logger.error(`Unable to dynamically require ${moduleName}`); + // no-empty + } + + if (!mod) { + try { + const { cwd } = dynamicRequire(module, 'process'); + mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T; + } catch (e) { + // no-empty + } } return mod; From 2f542f694fff3dddd6a6e255cb240a2eb9162460 Mon Sep 17 00:00:00 2001 From: Charly Gomez Date: Tue, 5 Nov 2024 12:20:52 +0100 Subject: [PATCH 3/3] remove unused imports --- packages/utils/src/node.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/utils/src/node.ts b/packages/utils/src/node.ts index 42a26989d199..8640a5a95801 100644 --- a/packages/utils/src/node.ts +++ b/packages/utils/src/node.ts @@ -3,9 +3,7 @@ * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere. */ -import { DEBUG_BUILD } from './debug-build'; import { isBrowserBundle } from './env'; -import { logger } from './logger'; /** * Checks whether we're in the Node.js or Browser environment