JamieMason / JamieMason/astexplorer.app
fix(rollup): CommonJS not supported in transforms
- 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
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