diff --git a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts index 04c978130f256c..f646e3815758d1 100644 --- a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts +++ b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts @@ -276,7 +276,7 @@ module.exports = Object.create(new Proxy({}, { key !== 'constructor' && key !== 'splice' ) { - throw new Error(\`Module "${path}" has been externalized for browser compatibility. Cannot access "${path}.\${key}" in client code.\`) + console.warn(\`Module "${path}" has been externalized for browser compatibility. Cannot access "${path}.\${key}" in client code.\`) } } }))` diff --git a/playground/optimize-deps/__tests__/optimize-deps.spec.ts b/playground/optimize-deps/__tests__/optimize-deps.spec.ts index fd717b0401499b..19e9014d7234cf 100644 --- a/playground/optimize-deps/__tests__/optimize-deps.spec.ts +++ b/playground/optimize-deps/__tests__/optimize-deps.spec.ts @@ -149,16 +149,23 @@ test('flatten id should generate correctly', async () => { test.runIf(isServe)('error on builtin modules usage', () => { expect(browserLogs).toEqual( expect.arrayContaining([ - // from dep-with-builtin-module-esm top-level try-catch + // from dep-with-builtin-module-esm + expect.stringMatching(/dep-with-builtin-module-esm.*is not a function/), + // dep-with-builtin-module-esm warnings expect.stringContaining( - 'dep-with-builtin-module-esm Error: Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFileSync" in client code.' + 'Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFileSync" in client code.' ), expect.stringContaining( - 'dep-with-builtin-module-esm Error: Module "path" has been externalized for browser compatibility. Cannot access "path.join" in client code.' + 'Module "path" has been externalized for browser compatibility. Cannot access "path.join" in client code.' ), - // from dep-with-builtin-module-cjs top-level try-catch + // from dep-with-builtin-module-cjs + expect.stringMatching(/dep-with-builtin-module-cjs.*is not a function/), + // dep-with-builtin-module-cjs warnings expect.stringContaining( - 'dep-with-builtin-module-cjs Error: Module "path" has been externalized for browser compatibility. Cannot access "path.join" in client code.' + 'Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFileSync" in client code.' + ), + expect.stringContaining( + 'Module "path" has been externalized for browser compatibility. Cannot access "path.join" in client code.' ) ]) ) @@ -167,11 +174,7 @@ test.runIf(isServe)('error on builtin modules usage', () => { expect.arrayContaining([ // from user source code 'Module "buffer" has been externalized for browser compatibility. Cannot access "buffer.Buffer" in client code.', - 'Module "child_process" has been externalized for browser compatibility. Cannot access "child_process.execSync" in client code.', - // from dep-with-builtin-module-esm read() - 'Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFileSync" in client code.', - // from dep-with-builtin-module-esm read() - 'Module "fs" has been externalized for browser compatibility. Cannot access "fs.readFileSync" in client code.' + 'Module "child_process" has been externalized for browser compatibility. Cannot access "child_process.execSync" in client code.' ]) ) })