Skip to content

Commit 20e6060

Browse files
fi3eworkbluwy
andauthored
fix(optimizer): log esbuild error when scanning deps (#11977)
Co-authored-by: bluwy <[email protected]>
1 parent f2ad222 commit 20e6060

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

packages/vite/src/node/optimizer/optimizer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ async function createDepsOptimizer(
233233
// do another optimize step
234234
postScanOptimizationResult = runOptimizeDeps(config, knownDeps)
235235
} catch (e) {
236-
logger.error(e.message)
236+
logger.error(e.stack || e.message)
237237
} finally {
238238
resolve()
239239
depsOptimizer.scanProcessing = undefined

packages/vite/src/node/optimizer/scan.ts

+32-14
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import path from 'node:path'
33
import { performance } from 'node:perf_hooks'
44
import glob from 'fast-glob'
55
import type { Loader, OnLoadResult, Plugin } from 'esbuild'
6-
import { build, transform } from 'esbuild'
6+
import { build, formatMessages, transform } from 'esbuild'
77
import colors from 'picocolors'
88
import type { ResolvedConfig } from '..'
99
import {
@@ -106,19 +106,37 @@ export async function scanImports(config: ResolvedConfig): Promise<{
106106
const { plugins = [], ...esbuildOptions } =
107107
config.optimizeDeps?.esbuildOptions ?? {}
108108

109-
await build({
110-
absWorkingDir: process.cwd(),
111-
write: false,
112-
stdin: {
113-
contents: entries.map((e) => `import ${JSON.stringify(e)}`).join('\n'),
114-
loader: 'js',
115-
},
116-
bundle: true,
117-
format: 'esm',
118-
logLevel: 'error',
119-
plugins: [...plugins, plugin],
120-
...esbuildOptions,
121-
})
109+
try {
110+
await build({
111+
absWorkingDir: process.cwd(),
112+
write: false,
113+
stdin: {
114+
contents: entries.map((e) => `import ${JSON.stringify(e)}`).join('\n'),
115+
loader: 'js',
116+
},
117+
bundle: true,
118+
format: 'esm',
119+
logLevel: 'silent',
120+
plugins: [...plugins, plugin],
121+
...esbuildOptions,
122+
})
123+
} catch (e) {
124+
const prependMessage = colors.red(`\
125+
Failed to scan for dependencies from entries:
126+
${entries.join('\n')}
127+
128+
`)
129+
if (e.errors) {
130+
const msgs = await formatMessages(e.errors, {
131+
kind: 'error',
132+
color: true,
133+
})
134+
e.message = prependMessage + msgs.join('\n')
135+
} else {
136+
e.message = prependMessage + e.message
137+
}
138+
throw e
139+
}
122140

123141
debug(`Scan completed in ${(performance.now() - start).toFixed(2)}ms:`, deps)
124142

0 commit comments

Comments
 (0)