I'm running into this error while bundling one JS library which includes a package from another of my JS libraries. Both are bundled via Rollup, as UMD modules. I've reacreated this issue in a separate repo in order to show a simple example.
It'd be best to pull the repo and npm run build to see what I'm running into.
build/index.js → dist/index.umd.js...
(!) "this" has been rewritten to "undefined"
https://rollupjs.org/guide/en/#error-this-is-undefined
node_modules/some-package/index.umd.js
3: typeof define === 'function' && define.amd ? define(['exports'], factory) :
4: (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["clarakm-env-js"] = {}));
5: })(this, (function (exports) { 'use strict';
^
6: var MY_CONSTANT = "this is my constant";
[!] RollupError: "MY_CONSTANT" is not exported by "node_modules/some-package/index.umd.js", imported by "build/index.js".
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
build/index.js (1:9)
1: import { MY_CONSTANT } from 'some-package';
^
2: console.log(MY_CONSTANT);
3: //# sourceMappingURL=index.js.map
at error (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:210:30)
at Module.error (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:13578:16)
at Module.traceVariable (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:13961:29)
at ModuleScope.findVariable (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:12442:39)
at Identifier.bind (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:8371:40)
at CallExpression.bind (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:6165:28)
at CallExpression.bind (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:9888:15)
at ExpressionStatement.bind (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:6169:23)
at Program.bind (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:6165:28)
at Module.bindReferences (/home/josh/Desktop/rollup-issue/node_modules/rollup/dist/shared/rollup.js:13574:18)
All of this is built via tsc && rollup -c. Since MY_CONSTANT is clearly exported from some-module, why does Rollup complain that it is not exported?
src/index.ts
import { MY_CONSTANT } from 'some-package';
console.log(MY_CONSTANT);
rollup.config.mjs
import nodeResolve from '@rollup/plugin-node-resolve';
export default {
input: 'build/index.js',
output: {
file: 'dist/index.umd.js',
format: 'umd'
},
plugins: [
nodeResolve(),
]
};
node_modules/some-package/index.d.ts
export declare const MY_CONSTANT = 'this is my constant';
node_modules/some-package/index.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["clarakm-env-js"] = {}));
})(this, (function (exports) { 'use strict';
var MY_CONSTANT = "this is my constant";
exports.MY_CONSTANT = MY_CONSTANT;
}));
node_modules/some-package/package.json
{
"name": "some-package",
"version": "1.0.0",
"main": "index.umd.js",
"module": "index.umd.js",
"types": "index.d.ts"
}
I fixed this by changing the
formatof the package toesrather thanumd. I assumed Rollup could handle UMD out of the box but ... maybe not?