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'
+}