[JS Printer] Fix CJS <> ESM interop edgecase

For code like this:

```js
module.exports = require("foo")
```

If `"foo"` is bundled, we should access it as the namespace reference from the bundle. Previously, we assumed it would be a property access.
This commit is contained in:
Jarred Sumner
2022-01-29 23:43:10 -08:00
parent 4aabccfc79
commit 73449bf433

View File

@@ -2018,6 +2018,13 @@ pub fn NewPrinter(
p.printSymbol(namespace.namespace_ref);
}
// In the case of code like this:
// module.exports = require("foo")
// if "foo" is bundled
// then we access it as the namespace symbol itself
// that means the namespace alias is empty
if (namespace.alias.len == 0) return;
if (p.canPrintIdentifier(namespace.alias)) {
p.print(".");
p.printIdentifier(namespace.alias);