From 604262333de194296a4b49e48c8a0efd863badf9 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 25 Sep 2025 12:39:46 +0200 Subject: [PATCH 1/4] ref(aws-serverless): Add resolution for `import-in-the-middle` when building the Lambda layer --- packages/aws-serverless/scripts/buildLambdaLayer.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/aws-serverless/scripts/buildLambdaLayer.ts b/packages/aws-serverless/scripts/buildLambdaLayer.ts index c12d8bd70d77..c0a1fc222a46 100644 --- a/packages/aws-serverless/scripts/buildLambdaLayer.ts +++ b/packages/aws-serverless/scripts/buildLambdaLayer.ts @@ -77,10 +77,14 @@ async function pruneNodeModules(): Promise { './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/cjs/index.js', './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/cjs/awslambda-auto.js', './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/esm/awslambda-auto.js', + // Add the import-in-the-middle hook.js to the file list because NFT can't correctly track through `hook.mjs` + // './build/aws/dist-serverless/nodejs/node_modules/import-in-the-middle/hook.js', ]; const { fileList } = await nodeFileTrace(entrypoints); + fs.writeFileSync('fileList.json', JSON.stringify(Array.from(fileList), null, 2)); + const allFiles = getAllFiles('./build/aws/dist-serverless/nodejs/node_modules'); const filesToDelete = allFiles.filter(file => !fileList.has(file)); @@ -174,6 +178,8 @@ function buildPackageJson(): void { } } + resolutions['import-in-the-middle'] = '1.14.2'; + const packageJson = { dependencies: { '@sentry/aws-serverless': 'file:../../../../../../packages/aws-serverless', From c1efdce439b3aaace7411396f0adbcc2949c7c6a Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 25 Sep 2025 12:40:26 +0200 Subject: [PATCH 2/4] . --- packages/aws-serverless/scripts/buildLambdaLayer.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/aws-serverless/scripts/buildLambdaLayer.ts b/packages/aws-serverless/scripts/buildLambdaLayer.ts index c0a1fc222a46..f206b09870b5 100644 --- a/packages/aws-serverless/scripts/buildLambdaLayer.ts +++ b/packages/aws-serverless/scripts/buildLambdaLayer.ts @@ -77,14 +77,10 @@ async function pruneNodeModules(): Promise { './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/cjs/index.js', './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/cjs/awslambda-auto.js', './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/esm/awslambda-auto.js', - // Add the import-in-the-middle hook.js to the file list because NFT can't correctly track through `hook.mjs` - // './build/aws/dist-serverless/nodejs/node_modules/import-in-the-middle/hook.js', ]; const { fileList } = await nodeFileTrace(entrypoints); - fs.writeFileSync('fileList.json', JSON.stringify(Array.from(fileList), null, 2)); - const allFiles = getAllFiles('./build/aws/dist-serverless/nodejs/node_modules'); const filesToDelete = allFiles.filter(file => !fileList.has(file)); From 572af881a9eb7e9ceef2b7781f155e61918ed7e3 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 25 Sep 2025 12:47:31 +0200 Subject: [PATCH 3/4] comment --- packages/aws-serverless/scripts/buildLambdaLayer.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/aws-serverless/scripts/buildLambdaLayer.ts b/packages/aws-serverless/scripts/buildLambdaLayer.ts index f206b09870b5..d5410cf7f919 100644 --- a/packages/aws-serverless/scripts/buildLambdaLayer.ts +++ b/packages/aws-serverless/scripts/buildLambdaLayer.ts @@ -174,6 +174,10 @@ function buildPackageJson(): void { } } + // We temporarily have to pin import-in-the-middle to 1.14.2 because @vercel/nft currently doesn't + // track all modules required by `hook.mjs`. + // TODO: Remove this once @vercel/nft can handle import and require (createRequire) statements in one file + // or once IITM reverts/adjusts the require statement on their end. resolutions['import-in-the-middle'] = '1.14.2'; const packageJson = { From dc0ffd4d48c7a112e9bb7bdc5730c442f14d4233 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 25 Sep 2025 13:07:04 +0200 Subject: [PATCH 4/4] use mixedModules: true --- packages/aws-serverless/scripts/buildLambdaLayer.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/aws-serverless/scripts/buildLambdaLayer.ts b/packages/aws-serverless/scripts/buildLambdaLayer.ts index d5410cf7f919..fb11652712a7 100644 --- a/packages/aws-serverless/scripts/buildLambdaLayer.ts +++ b/packages/aws-serverless/scripts/buildLambdaLayer.ts @@ -79,7 +79,11 @@ async function pruneNodeModules(): Promise { './build/aws/dist-serverless/nodejs/node_modules/@sentry/aws-serverless/build/npm/esm/awslambda-auto.js', ]; - const { fileList } = await nodeFileTrace(entrypoints); + const { fileList } = await nodeFileTrace(entrypoints, { + // import-in-the-middle uses mixed require and import syntax in their `hook.mjs` file. + // So we need to set `mixedModules` to `true` to ensure that all modules are tracked. + mixedModules: true, + }); const allFiles = getAllFiles('./build/aws/dist-serverless/nodejs/node_modules'); @@ -174,12 +178,6 @@ function buildPackageJson(): void { } } - // We temporarily have to pin import-in-the-middle to 1.14.2 because @vercel/nft currently doesn't - // track all modules required by `hook.mjs`. - // TODO: Remove this once @vercel/nft can handle import and require (createRequire) statements in one file - // or once IITM reverts/adjusts the require statement on their end. - resolutions['import-in-the-middle'] = '1.14.2'; - const packageJson = { dependencies: { '@sentry/aws-serverless': 'file:../../../../../../packages/aws-serverless',