From 3f4ecf0f3e7a05ebd61c270382869bffae425cd2 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Tue, 15 Mar 2022 16:22:16 +0100 Subject: [PATCH 1/3] Drop browser field for edge runtime --- packages/next/build/webpack-config.ts | 4 ++-- .../app/node_modules/non-isomorphic-text/browser.js | 1 + .../app/node_modules/non-isomorphic-text/index.js | 1 + .../app/node_modules/non-isomorphic-text/package.json | 5 +++++ .../app/pages/external-imports.server.js | 8 +++++++- .../react-streaming-and-server-components/test/rsc.js | 5 +++++ 6 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/browser.js create mode 100644 test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/index.js create mode 100644 test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/package.json diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 3e1baa95b17..f46ed071741 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -645,7 +645,7 @@ export default async function getBaseWebpackConfig( }, } : undefined), - mainFields: !targetWeb ? ['main', 'module'] : ['browser', 'module', 'main'], + mainFields: isServer ? ['main', 'module'] : ['browser', 'module', 'main'], plugins: [], } @@ -1561,7 +1561,7 @@ export default async function getBaseWebpackConfig( }, } - if (targetWeb) { + if (!isServer) { webpack5Config.output!.enabledLibraryTypes = ['assign'] } diff --git a/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/browser.js b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/browser.js new file mode 100644 index 00000000000..76b38b7d2ad --- /dev/null +++ b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/browser.js @@ -0,0 +1 @@ +export default () => 'browser-field-export' diff --git a/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/index.js b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/index.js new file mode 100644 index 00000000000..41865ae5aa7 --- /dev/null +++ b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/index.js @@ -0,0 +1 @@ +export default () => 'isomorphic-export' diff --git a/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/package.json b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/package.json new file mode 100644 index 00000000000..bf2f1356711 --- /dev/null +++ b/test/integration/react-streaming-and-server-components/app/node_modules/non-isomorphic-text/package.json @@ -0,0 +1,5 @@ +{ + "name": "non-isomorphic-text", + "module": "./index.js", + "browser": "./browser.js" +} diff --git a/test/integration/react-streaming-and-server-components/app/pages/external-imports.server.js b/test/integration/react-streaming-and-server-components/app/pages/external-imports.server.js index 6627e306754..40a41e569a7 100644 --- a/test/integration/react-streaming-and-server-components/app/pages/external-imports.server.js +++ b/test/integration/react-streaming-and-server-components/app/pages/external-imports.server.js @@ -1,5 +1,11 @@ import moment from 'moment' +import nonIsomorphicText from 'non-isomorphic-text' export default function Page() { - return
date:{moment().toString()}
+ return ( +
+
date:{moment().toString()}
+
{nonIsomorphicText()}
+
+ ) } diff --git a/test/integration/react-streaming-and-server-components/test/rsc.js b/test/integration/react-streaming-and-server-components/test/rsc.js index 5e7c60d3f4f..da05cf7fb1b 100644 --- a/test/integration/react-streaming-and-server-components/test/rsc.js +++ b/test/integration/react-streaming-and-server-components/test/rsc.js @@ -157,6 +157,11 @@ export default function (context, { runtime, env }) { }) } + it('should not pick browser field from package.json for external libraries', async () => { + const html = await renderViaHTTP(context.appPort, '/external-imports') + expect(html).toContain('isomorphic-text') + }) + it('should handle various kinds of exports correctly', async () => { const html = await renderViaHTTP(context.appPort, '/various-exports') const content = getNodeBySelector(html, '#__next').text() From 973896e8dde25b14b59cc13840085498d2a8eca7 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Tue, 15 Mar 2022 16:55:18 +0100 Subject: [PATCH 2/3] prioritize module field and fix test --- packages/next/build/webpack-config.ts | 4 +++- .../react-streaming-and-server-components/test/rsc.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index f46ed071741..f1ffa88fdd0 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -645,7 +645,9 @@ export default async function getBaseWebpackConfig( }, } : undefined), - mainFields: isServer ? ['main', 'module'] : ['browser', 'module', 'main'], + mainFields: targetWeb + ? (isEdgeRuntime ? [] : ['browser']).concat(['module', 'main']) + : ['main', 'module'], plugins: [], } diff --git a/test/integration/react-streaming-and-server-components/test/rsc.js b/test/integration/react-streaming-and-server-components/test/rsc.js index da05cf7fb1b..8b4a8185022 100644 --- a/test/integration/react-streaming-and-server-components/test/rsc.js +++ b/test/integration/react-streaming-and-server-components/test/rsc.js @@ -159,7 +159,7 @@ export default function (context, { runtime, env }) { it('should not pick browser field from package.json for external libraries', async () => { const html = await renderViaHTTP(context.appPort, '/external-imports') - expect(html).toContain('isomorphic-text') + expect(html).toContain('isomorphic-export') }) it('should handle various kinds of exports correctly', async () => { From d0406bcbfec17560a0254ccfc93ab79809d9f566 Mon Sep 17 00:00:00 2001 From: Jiachi Liu Date: Wed, 16 Mar 2022 13:51:24 +0100 Subject: [PATCH 3/3] revert enabledLibraryTypes checking --- packages/next/build/webpack-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index cb9927a9d5d..a42abcae003 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -1565,7 +1565,7 @@ export default async function getBaseWebpackConfig( }, } - if (!isServer) { + if (targetWeb) { webpack5Config.output!.enabledLibraryTypes = ['assign'] }