From 122c6e75202eb295cabb8c9bcbcc5a6d3bf5ec40 Mon Sep 17 00:00:00 2001 From: yoho Date: Thu, 28 Jul 2022 14:11:42 +0800 Subject: [PATCH] fix: url constructor import asset no as url (#9399) --- packages/vite/src/node/plugins/assetImportMetaUrl.ts | 2 +- playground/assets/__tests__/assets.spec.ts | 3 +++ playground/assets/index.html | 7 +++++++ playground/assets/nested/test.js | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 playground/assets/nested/test.js diff --git a/packages/vite/src/node/plugins/assetImportMetaUrl.ts b/packages/vite/src/node/plugins/assetImportMetaUrl.ts index 6d7a657706cf9c..4b52a225a68458 100644 --- a/packages/vite/src/node/plugins/assetImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/assetImportMetaUrl.ts @@ -55,7 +55,7 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { s.overwrite( index, index + exp.length, - `new URL((import.meta.glob(${pattern}, { eager: true, import: 'default' }))[${rawUrl}], self.location)`, + `new URL((import.meta.glob(${pattern}, { eager: true, import: 'default', as: 'url' }))[${rawUrl}], self.location)`, { contentOnly: true } ) continue diff --git a/playground/assets/__tests__/assets.spec.ts b/playground/assets/__tests__/assets.spec.ts index 5b265578e98751..600ea3b0bba971 100644 --- a/playground/assets/__tests__/assets.spec.ts +++ b/playground/assets/__tests__/assets.spec.ts @@ -288,6 +288,9 @@ test('new URL(`${dynamic}`, import.meta.url)', async () => { expect(await page.textContent('.dynamic-import-meta-url-2')).toMatch( assetMatch ) + expect(await page.textContent('.dynamic-import-meta-url-js')).toMatch( + isBuild ? 'data:application/javascript;base64' : '/foo/nested/test.js' + ) }) test('new URL(`non-existent`, import.meta.url)', async () => { diff --git a/playground/assets/index.html b/playground/assets/index.html index a741379e82013e..5a49d42791d058 100644 --- a/playground/assets/index.html +++ b/playground/assets/index.html @@ -199,6 +199,9 @@

new URL(`./${dynamic}`, import.meta.url)

+

+ +

new URL(`./${dynamic}`, import.meta.url,) (with comma)

@@ -390,6 +393,10 @@

style in svg

testDynamicImportMetaUrlWithComma('icon', 1) testDynamicImportMetaUrlWithComma('asset', 2) + const name = 'test' + const js = new URL(`./nested/${name}.js`, import.meta.url).href + text('.dynamic-import-meta-url-js', js) + function text(el, text) { document.querySelector(el).textContent = text } diff --git a/playground/assets/nested/test.js b/playground/assets/nested/test.js new file mode 100644 index 00000000000000..1a292f36ac7916 --- /dev/null +++ b/playground/assets/nested/test.js @@ -0,0 +1,3 @@ +export default class a { + name = 'a' +}