From 14ffa25ddb6f1d43daf58ceadd71dc01f3d67b1d Mon Sep 17 00:00:00 2001 From: chaxus Date: Mon, 27 Mar 2023 22:40:51 +0800 Subject: [PATCH 1/2] fix: Warn on build when bundling code that uses nodejs built in module --- packages/vite/src/node/plugins/resolve.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index 0d6b732e5ade2c..de2d3bd1e34157 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -48,6 +48,7 @@ import { loadPackageData, resolvePackageData, } from '../packages' +import { createLogger } from '../logger' const normalizedClientEntry = normalizePath(CLIENT_ENTRY) const normalizedEnvEntry = normalizePath(ENV_ENTRY) @@ -67,6 +68,8 @@ const debug = createDebugger('vite:resolve-details', { onlyWhenFocused: true, }) +const logger = createLogger() + export interface ResolveOptions { /** * @default ['module', 'jsnext:main', 'jsnext'] @@ -372,6 +375,13 @@ export function resolvePlugin(resolveOptions: InternalResolveOptions): Plugin { `(imported by: ${colors.white(colors.dim(importer))})`, ) } + if (isProduction) { + logger.warn( + colors.yellow( + `\n Module "${id}" has been externalized for browser compatibility. Cannot access "${id}" in client code. See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.\n`, + ), + ) + } return isProduction ? browserExternalId : `${browserExternalId}:${id}` From 25ae37887dc20286925217c26bdb54eabfc59079 Mon Sep 17 00:00:00 2001 From: bluwy Date: Sat, 8 Apr 2023 00:36:11 +0800 Subject: [PATCH 2/2] fix: log correctly --- packages/vite/src/node/plugins/resolve.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index de2d3bd1e34157..0f6abefcd21116 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -48,7 +48,6 @@ import { loadPackageData, resolvePackageData, } from '../packages' -import { createLogger } from '../logger' const normalizedClientEntry = normalizePath(CLIENT_ENTRY) const normalizedEnvEntry = normalizePath(ENV_ENTRY) @@ -68,8 +67,6 @@ const debug = createDebugger('vite:resolve-details', { onlyWhenFocused: true, }) -const logger = createLogger() - export interface ResolveOptions { /** * @default ['module', 'jsnext:main', 'jsnext'] @@ -374,12 +371,10 @@ export function resolvePlugin(resolveOptions: InternalResolveOptions): Plugin { `externalized node built-in "${id}" to empty module. ` + `(imported by: ${colors.white(colors.dim(importer))})`, ) - } - if (isProduction) { - logger.warn( - colors.yellow( - `\n Module "${id}" has been externalized for browser compatibility. Cannot access "${id}" in client code. See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.\n`, - ), + } else if (isProduction) { + this.warn( + `Module "${id}" has been externalized for browser compatibility, imported by "${importer}". ` + + `See http://vitejs.dev/guide/troubleshooting.html#module-externalized-for-browser-compatibility for more details.`, ) } return isProduction