endo
endo copied to clipboard
ses: unexpectedly undefined `import.meta`
Describe the bug
I ran into this exception when using ses to load a file from @babel/helper-define-polyfill-provider, containing this line:
const require = createRequire(import /*::(_)*/.meta.url); // eslint-disable-line
Steps to reproduce
TODO: Add minimal reproduction
The actual error looks like:
TypeError: [BABEL]: Cannot read properties of undefined (reading 'meta') (While processing: /Users/boneskull/projects/lavamoat/lavamoat/node_modules/@babel/preset-env/lib/index.js)
at eval (file:///Users/boneskull/projects/lavamoat/lavamoat/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs:503:52)
at eval (file:///Users/boneskull/projects/lavamoat/lavamoat/node_modules/@babel/helper-define-polyfill-provider/esm/index.node.mjs:880:3)
at Object.execute (file:///Users/boneskull/projects/endojs/endo/packages/ses/src/module-instance.js:472:9)
at imports (file:///Users/boneskull/projects/endojs/endo/packages/ses/src/module-instance.js:382:16)
at eval (file:///Users/boneskull/projects/lavamoat/lavamoat/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs:1:176)
at eval (file:///Users/boneskull/projects/lavamoat/lavamoat/node_modules/babel-plugin-polyfill-corejs2/esm/index.mjs:397:3)
at execute (file:///Users/boneskull/projects/endojs/endo/packages/ses/src/module-instance.js:472:9)
at compartmentImportNow (file:///Users/boneskull/projects/endojs/endo/packages/ses/src/compartment.js:138:3)
at ExecutionCompartment.importNow (file:///Users/boneskull/projects/endojs/endo/packages/ses/src/compartment.js:230:12)
at require (file:///Users/boneskull/projects/endojs/endo/packages/compartment-mapper/src/parse-cjs-shared-export-wrapper.js:159:31)
Expected behavior
No exception thrown.
Platform environment
Node.js v22.15.0, boneskull/reexport-fix branch
I’ve learned from Nicolò of Babel that this is a counter-measure for Flow, which was unable to recognize import.meta.url at some point, but now that it can, this is no longer needed. This was a successful measure against their ESM parser and was recognized as import().meta.