diff --git a/packages/vite-node/src/externalize.ts b/packages/vite-node/src/externalize.ts index bfce22bf50fe..eb39b678658e 100644 --- a/packages/vite-node/src/externalize.ts +++ b/packages/vite-node/src/externalize.ts @@ -59,6 +59,11 @@ async function _shouldExternalize( if (isNodeBuiltin(id)) return id + // data: should be processed by native import, + // since it is a feature of ESM + if (id.startsWith('data:')) + return id + id = patchWindowsImportPath(id) if (matchExternalizePattern(id, options?.inline)) diff --git a/test/core/test/imports.test.ts b/test/core/test/imports.test.ts index 6820922cac98..58f6c6e552c0 100644 --- a/test/core/test/imports.test.ts +++ b/test/core/test/imports.test.ts @@ -26,3 +26,9 @@ test('dynamic absolute import works', async() => { expect(timeout).toBe(dynamicTimeout) }) + +test('data with dynamic import works', async() => { + const dataUri = 'data:text/javascript;charset=utf-8,export default "hi"' + const { default: hi } = await import(dataUri) + expect(hi).toBe('hi') +})