From 24ededdbe6b32a80219f42c868433f3e3e21931d Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Tue, 4 Oct 2022 09:03:39 +0200 Subject: [PATCH] Also use import for unresolvable dynamic imports --- src/ast/nodes/ImportExpression.ts | 7 ++++-- .../_expected/cjs.js | 23 +++---------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/ast/nodes/ImportExpression.ts b/src/ast/nodes/ImportExpression.ts index 3a405d49ed9..10346a5651a 100644 --- a/src/ast/nodes/ImportExpression.ts +++ b/src/ast/nodes/ImportExpression.ts @@ -1,6 +1,6 @@ import type MagicString from 'magic-string'; import ExternalModule from '../../ExternalModule'; -import type Module from '../../Module'; +import Module from '../../Module'; import type { GetInterop, NormalizedOutputOptions } from '../../rollup/types'; import type { PluginDriver } from '../../utils/PluginDriver'; import type { GenerateCodeSnippets } from '../../utils/generateCodeSnippets'; @@ -157,7 +157,10 @@ export default class ImportExpression extends NodeBase { const hasDynamicTarget = !this.resolution || typeof this.resolution === 'string'; switch (format) { case 'cjs': { - if (resolution instanceof ExternalModule && dynamicImportInCjs) { + if ( + dynamicImportInCjs && + (!resolution || typeof resolution === 'string' || resolution instanceof ExternalModule) + ) { return { helper: null, mechanism: null }; } const helper = getInteropHelper(resolution, exportMode, interop); diff --git a/test/form/samples/dynamic-import-unresolvable/_expected/cjs.js b/test/form/samples/dynamic-import-unresolvable/_expected/cjs.js index 4bbd9e53d00..d566db97089 100644 --- a/test/form/samples/dynamic-import-unresolvable/_expected/cjs.js +++ b/test/form/samples/dynamic-import-unresolvable/_expected/cjs.js @@ -1,23 +1,6 @@ 'use strict'; -function _interopNamespaceDefault(e) { - var n = Object.create(null); - if (e) { - Object.keys(e).forEach(function (k) { - if (k !== 'default') { - var d = Object.getOwnPropertyDescriptor(e, k); - Object.defineProperty(n, k, d.get ? d : { - enumerable: true, - get: function () { return e[k]; } - }); - } - }); - } - n.default = e; - return Object.freeze(n); -} - -(function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefault(require(t)); }); })(`${globalThis.unknown}`); -(function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefault(require(t)); }); })(`My ${globalThis.unknown}`); -(function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefault(require(t)); }); })('./seven.js'); +import(`${globalThis.unknown}`); +import(`My ${globalThis.unknown}`); +import('./seven.js'); import('./seven.js');