Skip to content

Commit

Permalink
Also use import for unresolvable dynamic imports
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Oct 4, 2022
1 parent dad2150 commit 24ededd
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 22 deletions.
7 changes: 5 additions & 2 deletions 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';
Expand Down Expand Up @@ -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);
Expand Down
23 changes: 3 additions & 20 deletions 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');

0 comments on commit 24ededd

Please sign in to comment.