Skip to content

"get" as export name in "0 && annotation" breaks parsing of subsequent exports #36

@jeroen-plug-ibood

Description

@jeroen-plug-ibood

When a CJS module uses esbuild's 0 && (module.exports = {...}) annotation and one of the export names is get, all exports listed after it are silently dropped.

Reproduction

// lib.cjs
module.exports = { before: 1, get: 2, after: 3 };
0 && (module.exports = { before, get, after });
// test.mjs
import * as lib from "./lib.cjs";
console.log(Object.keys(lib));
$ nvm exec v24.13.1 node test.mjs
Running node v24.13.1 (npm v11.8.0)
[ 'after', 'before', 'default', 'get', 'module.exports' ]

$ nvm exec v24.14.0 node test.mjs
Running node v24.14.0 (npm v11.9.0)
[ 'before', 'default', 'module.exports' ]

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions