Skip to content

[Bug]: CJS-ESM interop - property assignment on CJS module exports #7973

@jamesopstad

Description

@jamesopstad

Reproduction link or steps

https://github.com/jamesopstad/rolldown-assignment-repro

What is expected?

var import_src = /* @__PURE__ */ __toESM(require_cjs_module(), 1);
import_src.default.log = (...args) => { ... }; // Works - accesses actual module.exports
(0, import_src.default)("test");               // Works

What is actually happening?

var import_src = /* @__PURE__ */ __toESM(require_cjs_module(), 1);
import_src.log = (...args) => { ... };        // FAILS - getter-only property
(0, import_src.default)("test");              // Works - uses .default

System Info

System:
    OS: macOS 26.2
    CPU: (12) arm64 Apple M3 Pro
    Memory: 7.00 GB / 36.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 24.2.0 - /Users/jopstad/.nvm/versions/node/v24.2.0/bin/node
    Yarn: 1.22.22 - /Users/jopstad/.nvm/versions/node/v24.2.0/bin/yarn
    npm: 11.3.0 - /Users/jopstad/.nvm/versions/node/v24.2.0/bin/npm
    pnpm: 10.15.1 - /Users/jopstad/.nvm/versions/node/v24.2.0/bin/pnpm
    bun: 1.3.1 - /Users/jopstad/.bun/bin/bun
  Browsers:
    Chrome: 143.0.7499.193
    Safari: 26.2
  npmPackages:
    rolldown: 1.0.0-beta.60 => 1.0.0-beta.60

Any additional comments?

More info in the reproduction README.

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions