Skip to content

Not work well with TypeScript export default as output #69

Open

Description

@chentsulin

Hi,

TypeScript export default as syntax seems not working with this module. Considering the following TS code:

export { default as fs } from 'fs'; 

Test its output with cjs-module-lexer:

const { parse } = require('cjs-module-lexer');

const result = parse(`
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fs = void 0;
var fs_1 = require("fs");
Object.defineProperty(exports, "fs", { enumerable: true, get: function () { return __importDefault(fs_1).default; } });
`);

console.log(result);

It prints:

{ exports: [ '__esModule' ], reexports: [] }

fs do not be considered as exports in the above case.

And I also figure out that changing the place of the __importDefault call

var fs_1 = require("fs");
Object.defineProperty(exports, "fs", { enumerable: true, get: function () { return __importDefault(fs_1).default; } });

to something like this one (what babel does):

var fs_1 = __importDefault(require("fs"));
Object.defineProperty(exports, "fs", { enumerable: true, get: function () { return fs_1.default; } });

The result will become:

{ exports: [ '__esModule', 'fs'], reexports: [] }

Is this an expected behavior?

Ref:

Activity

  1. qnighy commented on Jun 15, 2022

    @qnighy

    Experiencing the same problem. react-share@4.4.0 is one such package and has no named exports except __esModule when imported from .mjs.

  2. chentsulin commented on Jul 12, 2022

    @chentsulin
    Author

    @guybedford Could you take a look on this? Is the behavior expected?

  3. added
    enhancementNew feature or request
    wontfixThis will not be worked on
    and removed
    enhancementNew feature or request
    on Dec 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions