From e19d91cf6820acefdf935fe1d06c5276e1cb5e96 Mon Sep 17 00:00:00 2001 From: Zack Tanner <1939140+ztanner@users.noreply.github.com> Date: Mon, 23 Sep 2024 19:51:30 -0700 Subject: [PATCH] add missing node modules to externals (#70382) We should not attempt to bundle builtin node modules on the server. This adds modules provided by Node.js to our externals list (along with some missing internal ones in Turbopack. These were copied from [here](https://github.com/vercel/next.js/blob/a675bde6c738318264573144663e38819aeb2661/crates/next-custom-transforms/src/transforms/warn_for_edge_runtime.rs#L77-L89)). Fixes #70262 Closes NDX-314 # Conflicts: # turbopack/crates/turbopack-resolve/src/resolve.rs --- packages/next/src/build/webpack-config.ts | 3 +++ .../basic/node-builtins/app/server-component/page.js | 2 ++ 2 files changed, 5 insertions(+) diff --git a/packages/next/src/build/webpack-config.ts b/packages/next/src/build/webpack-config.ts index fc1105a5a79f1..a4711bc4b9a07 100644 --- a/packages/next/src/build/webpack-config.ts +++ b/packages/next/src/build/webpack-config.ts @@ -844,6 +844,8 @@ export default async function getBaseWebpackConfig( const aliasCodeConditionTest = [codeCondition.test, pageExtensionsRegex] + const builtinModules = require('module').builtinModules + let webpackConfig: webpack.Configuration = { parallelism: Number(process.env.NEXT_WEBPACK_PARALLELISM) || undefined, ...(isNodeServer ? { externalsPresets: { node: true } } : {}), @@ -867,6 +869,7 @@ export default async function getBaseWebpackConfig( : []), ] : [ + ...builtinModules, ({ context, request, diff --git a/test/development/basic/node-builtins/app/server-component/page.js b/test/development/basic/node-builtins/app/server-component/page.js index a995bd45e81f4..7ab8f00e5384a 100644 --- a/test/development/basic/node-builtins/app/server-component/page.js +++ b/test/development/basic/node-builtins/app/server-component/page.js @@ -18,6 +18,8 @@ import timers from 'timers' import tty from 'tty' import util from 'util' import zlib from 'zlib' + +import '_http_common' import 'setimmediate' async function getData() {