From 103994f1cb396eeb541ea6201caa53975a807b1b Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Fri, 24 Feb 2023 13:47:25 -0800 Subject: [PATCH] Revert "Support `server-only` inside pages/api (#46328)" This reverts commit 130ab594cd82255d8217836f5275f9b3fa72746d. --- packages/next/src/build/webpack-config.ts | 42 +++++++++---------- test/e2e/app-dir/app/index.test.ts | 6 --- test/e2e/app-dir/app/pages/api/server-only.js | 5 --- 3 files changed, 20 insertions(+), 33 deletions(-) delete mode 100644 test/e2e/app-dir/app/pages/api/server-only.js diff --git a/packages/next/src/build/webpack-config.ts b/packages/next/src/build/webpack-config.ts index 5666d851f80ce..e118767631ff6 100644 --- a/packages/next/src/build/webpack-config.ts +++ b/packages/next/src/build/webpack-config.ts @@ -786,11 +786,6 @@ export default async function getBaseWebpackConfig( [getSwcLoader({ isServerLayer: true }), getBabelLoader()] : [] - const loaderForAPI = - hasServerComponents && useSWCLoader - ? getSwcLoader({ isServerLayer: true }) - : defaultLoaders.babel - const pageExtensions = config.pageExtensions const outputPath = @@ -1414,16 +1409,6 @@ export default async function getBaseWebpackConfig( }, } - const serverCondition = [ - 'react-server', - ...mainFieldsPerCompiler[ - isEdgeServer ? COMPILER_NAMES.edgeServer : COMPILER_NAMES.server - ], - 'node', - 'import', - 'require', - ] - let webpackConfig: webpack.Configuration = { parallelism: Number(process.env.NEXT_WEBPACK_PARALLELISM) || undefined, ...(isNodeServer ? { externalsPresets: { node: true } } : {}), @@ -1736,7 +1721,17 @@ export default async function getBaseWebpackConfig( ], }, resolve: { - conditionNames: serverCondition, + conditionNames: [ + 'react-server', + ...mainFieldsPerCompiler[ + isEdgeServer + ? COMPILER_NAMES.edgeServer + : COMPILER_NAMES.server + ], + 'node', + 'import', + 'require', + ], alias: { // If missing the alias override here, the default alias will be used which aliases // react to the direct file path, not the package name. In that case the condition @@ -1862,6 +1857,14 @@ export default async function getBaseWebpackConfig( }, ] : []), + { + test: /\.(js|cjs|mjs)$/, + issuerLayer: WEBPACK_LAYERS.api, + parser: { + // Switch back to normal URL handling + url: true, + }, + }, { oneOf: [ { @@ -1871,12 +1874,7 @@ export default async function getBaseWebpackConfig( // Switch back to normal URL handling url: true, }, - resolve: { - alias: { - 'server-only': 'next/dist/compiled/server-only/empty', - }, - }, - use: loaderForAPI, + use: defaultLoaders.babel, }, { ...codeCondition, diff --git a/test/e2e/app-dir/app/index.test.ts b/test/e2e/app-dir/app/index.test.ts index d467832abde24..2ede44cf0681e 100644 --- a/test/e2e/app-dir/app/index.test.ts +++ b/test/e2e/app-dir/app/index.test.ts @@ -13,7 +13,6 @@ createNextDescribe( react: 'latest', 'react-dom': 'latest', sass: 'latest', - 'server-only': 'latest', }, }, ({ next, isNextDev: isDev, isNextStart, isNextDeploy }) => { @@ -68,11 +67,6 @@ createNextDescribe( }) } - it('should support server-only in pages/api', async () => { - const res = await next.fetch('/api/server-only') - expect(await res.text()).toBe('Hello from server-only.js') - }) - if (!isNextDeploy) { it('should not share edge workers', async () => { const controller1 = new AbortController() diff --git a/test/e2e/app-dir/app/pages/api/server-only.js b/test/e2e/app-dir/app/pages/api/server-only.js deleted file mode 100644 index e01387deea265..0000000000000 --- a/test/e2e/app-dir/app/pages/api/server-only.js +++ /dev/null @@ -1,5 +0,0 @@ -import 'server-only' - -export default function (_, res) { - res.end('Hello from server-only.js') -}