JamieMason / JamieMason/astexplorer.app

fix(rollup): CommonJS not supported in transforms

Open
#11 0 comments 0 reactions 0 assignees View on GitHub
Priority: Critical Status: Help Needed Status: In Progress Type: Fix
Dominant language
TypeScript
Stars
121
Forks
11
PR merge metrics
No merged PRs in 30d

Description

## Description

Using ES Modules is fine, but `require` calls are behaving unexpectedly.

1. Create a file eg `/path/to/transform.js`:

```js
const { a } = require('./a');

export default babel => {
const { types: t } = babel;
console.log(a());
return {
visitor: {
Program(path) {
path.traverse({
enter(path) {
t.removeComments(path.node);
}
});
}
}
};
};
```

2. Create a file eg `/path/to/a.js`:

```js
module.exports = {
a: () => 'AAAA'
};
```

3. Select `babelv7` in the Transform Menu
4. Choose `/path/to/transform.js`

### Expected Output

```js
'use strict';

const a = () => 'AAAA';

var main = babel => {
const { types: t } = babel;
console.log(a());
return {
visitor: {
Program(path) {
path.traverse({
enter(path) {
t.removeComments(path.node);
}
});
}
}
};
};

module.exports = main;
```

### Actual Output

```
Cannot find module './a'
```

### rollup.js REPL Examples

1. This [ES Modules](https://rollupjs.org/repl/?version=1.21.4&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGElMjAlN0QlMjBmcm9tJTIwJy4lMkZhJyUzQiU1Q24lNUNuZXhwb3J0JTIwZGVmYXVsdCUyMGJhYmVsJTIwJTNEJTNFJTIwJTdCJTVDbiUyMCUyMGNvbnN0JTIwJTdCJTIwdHlwZXMlM0ElMjB0JTIwJTdEJTIwJTNEJTIwYmFiZWwlM0IlNUNuJTIwJTIwY29uc29sZS5sb2coYSgpKSUzQiU1Q24lMjAlMjByZXR1cm4lMjAlN0IlNUNuJTIwJTIwJTIwJTIwdmlzaXRvciUzQSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjBQcm9ncmFtKHBhdGgpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhdGgudHJhdmVyc2UoJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGVudGVyKHBhdGgpJTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHQucmVtb3ZlQ29tbWVudHMocGF0aC5ub2RlKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEKSUzQiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCU3RCUzQiU1Q24lN0QlM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlN0QlMkMlN0IlMjJuYW1lJTIyJTNBJTIyYS5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBjb25zdCUyMGElMjAlM0QlMjAoKSUyMCUzRCUzRSUyMCdBQUFBJyUyMiUyQyUyMmlzRW50cnklMjIlM0FmYWxzZSU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJjanMlMjIlMkMlMjJuYW1lJTIyJTNBJTIybXlCdW5kbGUlMjIlMkMlMjJhbWQlMjIlM0ElN0IlMjJpZCUyMiUzQSUyMiUyMiU3RCUyQyUyMmdsb2JhbHMlMjIlM0ElN0IlN0QlN0QlMkMlMjJleGFtcGxlJTIyJTNBbnVsbCU3RA==) example is fine.

1. This [CommonJS](https://rollupjs.org/repl/?version=1.21.4&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmNvbnN0JTIwJTdCJTIwYSUyMCU3RCUyMCUzRCUyMHJlcXVpcmUoJy4lMkZhJyklM0IlNUNuJTVDbmV4cG9ydCUyMGRlZmF1bHQlMjBiYWJlbCUyMCUzRCUzRSUyMCU3QiU1Q24lMjAlMjBjb25zdCUyMCU3QiUyMHR5cGVzJTNBJTIwdCUyMCU3RCUyMCUzRCUyMGJhYmVsJTNCJTVDbiUyMCUyMGNvbnNvbGUubG9nKGEoKSklM0IlNUNuJTIwJTIwcmV0dXJuJTIwJTdCJTVDbiUyMCUyMCUyMCUyMHZpc2l0b3IlM0ElMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwUHJvZ3JhbShwYXRoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYXRoLnRyYXZlcnNlKCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbnRlcihwYXRoKSUyMCU3QiU1Q24lMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0LnJlbW92ZUNvbW1lbnRzKHBhdGgubm9kZSklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCklM0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTVDbiUyMCUyMCUyMCUyMCU3RCU1Q24lMjAlMjAlN0QlM0IlNUNuJTdEJTNCJTVDbiUyMiUyQyUyMmlzRW50cnklMjIlM0F0cnVlJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMmEuanMlMjIlMkMlMjJjb2RlJTIyJTNBJTIybW9kdWxlLmV4cG9ydHMlMjAlM0QlMjAlN0IlNUNuJTVDdGElM0ElMjAoKSUyMCUzRCUzRSUyMCdBQUFBJyU1Q24lN0QlM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQWZhbHNlJTdEJTVEJTJDJTIyb3B0aW9ucyUyMiUzQSU3QiUyMmZvcm1hdCUyMiUzQSUyMmNqcyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJteUJ1bmRsZSUyMiUyQyUyMmFtZCUyMiUzQSU3QiUyMmlkJTIyJTNBJTIyJTIyJTdEJTJDJTIyZ2xvYmFscyUyMiUzQSU3QiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE) example doesn't error like it does in Electron (Electron could be a factor) but it also doesn't bundle in the contents of `/path/to/a.js` – it leaves the require calls there.

## Suggested Solution

https://github.com/rollup/rollup-plugin-node-resolve and/or https://github.com/rollup/rollup-plugin-commonj might possibly be needed.

## Help Needed

Ideas welcome, I'm stuck so far after an hour or two working on this.

Contributor guide

Open the contributing guide

Research direction

Start with the Transform Menu's Babel v7 path and compare its Electron behavior with the linked Rollup REPL examples. Trace how transform.js resolves require('./a') and whether the suggested node-resolve/CommonJS plugins are configured. Done means the CommonJS example bundles /path/to/a.js and no longer reports Cannot find module './a'.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, javascript
Domain
desktop, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.