From 0338fb046b7b013d99fdb6ddb344d24c2bec59d6 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Fri, 11 Nov 2022 01:04:42 +0100 Subject: [PATCH 1/2] Fix resolving for esm package with only exports.import condition --- packages/next/build/webpack-config.ts | 2 +- .../node_modules_bak/random-module-instance/package.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 8cfdbb20cecdb5b..433be77b2618508 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -1641,7 +1641,7 @@ export default async function getBaseWebpackConfig( return true }, resolve: { - conditionNames: ['react-server', 'node', 'require'], + conditionNames: ['react-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 diff --git a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json b/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json index d34ce9aac07c12d..4b86a4504bd0c35 100644 --- a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json +++ b/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json @@ -1,5 +1,7 @@ { "name": "random-module-instance", "type": "module", - "exports": "./index.js" + "exports": { + "import": "./index.js" + } } From 7e3ee6d9c07d1fb39c78eaaee6eef9c04aa5f680 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Fri, 11 Nov 2022 01:15:36 +0100 Subject: [PATCH 2/2] update tests --- packages/next/build/webpack-config.ts | 4 +--- test/e2e/app-dir/app-external.test.ts | 4 ++-- .../app-dir/app-external/app/external-imports/server/page.js | 2 +- .../app-dir/app-external/components/random-module-instance.js | 2 +- .../{random-module-instance => pure-esm-module}/index.js | 2 +- .../{random-module-instance => pure-esm-module}/package.json | 2 +- test/e2e/app-dir/rsc-basic/app/shared/page.js | 1 - 7 files changed, 7 insertions(+), 10 deletions(-) rename test/e2e/app-dir/app-external/node_modules_bak/{random-module-instance => pure-esm-module}/index.js (50%) rename test/e2e/app-dir/app-external/node_modules_bak/{random-module-instance => pure-esm-module}/package.json (66%) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 433be77b2618508..a47ea333684a834 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -1983,9 +1983,7 @@ export default async function getBaseWebpackConfig( new ReactLoadablePlugin({ filename: REACT_LOADABLE_MANIFEST, pagesDir, - runtimeAsset: true - ? `server/${MIDDLEWARE_REACT_LOADABLE_MANIFEST}.js` - : undefined, + runtimeAsset: `server/${MIDDLEWARE_REACT_LOADABLE_MANIFEST}.js`, dev, }), (isClient || isEdgeServer) && new DropClientPage(), diff --git a/test/e2e/app-dir/app-external.test.ts b/test/e2e/app-dir/app-external.test.ts index becf667a7140bc7..f80c78aacc879d1 100644 --- a/test/e2e/app-dir/app-external.test.ts +++ b/test/e2e/app-dir/app-external.test.ts @@ -90,9 +90,9 @@ describe('app dir - external dependency', () => { containClientContent(browserClientText) // support esm module imports on server side, and indirect imports from shared components - expect(serverHtml).toContain('random-module-instance') + expect(serverHtml).toContain('pure-esm-module') expect(sharedHtml).toContain( - 'node_modules instance from client module random-module-instance' + 'node_modules instance from client module pure-esm-module' ) }) diff --git a/test/e2e/app-dir/app-external/app/external-imports/server/page.js b/test/e2e/app-dir/app-external/app/external-imports/server/page.js index 902dee4d2549180..f28f309b74bb8f4 100644 --- a/test/e2e/app-dir/app-external/app/external-imports/server/page.js +++ b/test/e2e/app-dir/app-external/app/external-imports/server/page.js @@ -1,4 +1,4 @@ -import { name } from 'random-module-instance' +import { name } from 'pure-esm-module' export default function Page() { return ( diff --git a/test/e2e/app-dir/app-external/components/random-module-instance.js b/test/e2e/app-dir/app-external/components/random-module-instance.js index 29a407eaef6b5eb..3b8e0496319a85e 100644 --- a/test/e2e/app-dir/app-external/components/random-module-instance.js +++ b/test/e2e/app-dir/app-external/components/random-module-instance.js @@ -1,6 +1,6 @@ 'use client' -import { name } from 'random-module-instance' +import { name } from 'pure-esm-module' export default function () { return `node_modules instance from client module ${name}` diff --git a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/index.js b/test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/index.js similarity index 50% rename from test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/index.js rename to test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/index.js index 5b16eaa49443754..e8d8aece913effa 100644 --- a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/index.js +++ b/test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/index.js @@ -1,2 +1,2 @@ export const random = ~~(Math.random() * 1e5) -export const name = 'random-module-instance' +export const name = 'pure-esm-module' diff --git a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json b/test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/package.json similarity index 66% rename from test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json rename to test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/package.json index 4b86a4504bd0c35..5e19d0f7c55f58f 100644 --- a/test/e2e/app-dir/app-external/node_modules_bak/random-module-instance/package.json +++ b/test/e2e/app-dir/app-external/node_modules_bak/pure-esm-module/package.json @@ -1,5 +1,5 @@ { - "name": "random-module-instance", + "name": "pure-esm-module", "type": "module", "exports": { "import": "./index.js" diff --git a/test/e2e/app-dir/rsc-basic/app/shared/page.js b/test/e2e/app-dir/rsc-basic/app/shared/page.js index c0f3712250cbd53..56bfb4075272a10 100644 --- a/test/e2e/app-dir/rsc-basic/app/shared/page.js +++ b/test/e2e/app-dir/rsc-basic/app/shared/page.js @@ -1,7 +1,6 @@ import ClientFromDirect from '../../components/client' import ClientFromShared from '../../components/shared' import SharedFromClient from '../../components/shared-client' -// import Random from '../../components/random-module-instance' import Bar from '../../components/bar' export default function Page() {