From 8f1f82231eecdd84fcb0e14b72d35e162d075d9b Mon Sep 17 00:00:00 2001 From: nulladdict Date: Fri, 27 Aug 2021 21:07:33 +0500 Subject: [PATCH] fix(plugin-legacy): avoid executing blank dynamic import Importing `data:` uri doesn't pass strict CSP Export `__vite_legacy_guard` to keep rollup from removing it Closes #4568 --- packages/plugin-legacy/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/plugin-legacy/index.js b/packages/plugin-legacy/index.js index c91286befdd216..ba8acc104f6f9f 100644 --- a/packages/plugin-legacy/index.js +++ b/packages/plugin-legacy/index.js @@ -20,7 +20,7 @@ const legacyEntryId = 'vite-legacy-entry' const systemJSInlineCode = `System.import(document.getElementById('${legacyEntryId}').getAttribute('data-src'))` const dynamicFallbackInlineCode = `!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above should be ignored");var e=document.getElementById("${legacyPolyfillId}"),n=document.createElement("script");n.src=e.src,n.onload=function(){${systemJSInlineCode}},document.body.appendChild(n)}}();` -const blankDynamicImport = `import('data:text/javascript;base64,Cg==');` +const forceDynamicImportUsage = `export function __vite_legacy_guard(){import('data:text/javascript,')};` const legacyEnvVarMarker = `__VITE_IS_LEGACY__` @@ -238,7 +238,7 @@ function viteLegacyPlugin(options = {}) { const ms = new MagicString(raw) if (genDynamicFallback && chunk.isEntry) { - ms.prepend(blankDynamicImport) + ms.prepend(forceDynamicImportUsage) } if (raw.includes(legacyEnvVarMarker)) {