Skip to content

[Bug]: _interopRequireWildcard is not generated for .mjs files #14365

@sagargurtu

Description

@sagargurtu

💻

  • Would you like to work on a fix?

How are you using Babel?

@babel/cli

Input code

// src/index.mjs
import _, { capitalize } from "lodash";

console.log(_);
console.log(capitalize);

Configuration file name

.babelrc.js

Configuration

module.exports = {
  sourceType: 'unambiguous',
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current',
        },
      },
    ],
  ],
};

Current and expected behavior

Current Behavior

The above .mjs file is compiled to:

"use strict";

var _lodash = _interopRequireDefault(require("lodash"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

console.log(_lodash.default);
console.log(_lodash.capitalize);

Expected Behavior

The above .mjs file should be compiled to:

"use strict";

var _lodash = _interopRequireWildcard(require("lodash"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

console.log(_lodash.default);
console.log(_lodash.capitalize);

Npm Script

"build": "babel src --out-dir dist --extensions '.mjs'"

Environment

System:

  • OS: macOS 12.2.1

Binaries:

  • Node: 16.14.0 - ~/.nvm/versions/node/v16.14.0/bin/node
  • npm: 8.3.1 - ~/.nvm/versions/node/v16.14.0/bin/npm

npmPackages:

  • @babel/cli: ^7.12.0 => 7.17.6
  • @babel/core: ^7.12.0 => 7.17.5
  • @babel/preset-env: ^7.12.0 => 7.16.11

Possible solution

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    outdatedA closed issue/PR that is archived due to age. Recommended to make a new issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions