diff --git a/packages/vite/src/node/plugins/dynamicImportVars.ts b/packages/vite/src/node/plugins/dynamicImportVars.ts index 2df83a1867dcc9..ba3958460a5f63 100644 --- a/packages/vite/src/node/plugins/dynamicImportVars.ts +++ b/packages/vite/src/node/plugins/dynamicImportVars.ts @@ -39,14 +39,27 @@ interface DynamicImportPattern { rawPattern: string } -const dynamicImportHelper = (glob: Record, path: string) => { +const dynamicImportHelper = ( + glob: Record, + path: string, + segs: number, +) => { const v = glob[path] if (v) { return typeof v === 'function' ? v() : Promise.resolve(v) } return new Promise((_, reject) => { ;(typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)( - reject.bind(null, new Error('Unknown variable dynamic import: ' + path)), + reject.bind( + null, + new Error( + 'Unknown variable dynamic import: ' + + path + + (path.split('/').length !== segs + ? '. Note that variables only represent file names one level deep.' + : ''), + ), + ), ) }) } @@ -247,7 +260,7 @@ export function dynamicImportVarsPlugin(config: ResolvedConfig): Plugin { s.overwrite( expStart, expEnd, - `__variableDynamicImportRuntimeHelper(${glob}, \`${rawPattern}\`)`, + `__variableDynamicImportRuntimeHelper(${glob}, \`${rawPattern}\`, ${rawPattern.split('/').length})`, ) }