Repository navigation
Node SEA ESM support #53565
Description
Activity
- addedfeature requestIssues requesting new Node.js features.Issues requesting new Node.js features.
on Jun 24, 2024 Now I have to use a .cjs wrapper, and dynamic import my .mjs app entry, which is ugly.
according to lib/internal/util/embedding.js#L19
- addedesmIssues and PRs related to the ECMAScript Modules implementation.Issues and PRs related to the ECMAScript Modules implementation.single-executableIssues and PRs related to single-executable applications.Issues and PRs related to single-executable applications.
on Jun 24, 2024 github-actions commented
on Dec 23, 2024 on Dec 23, 2024 – with GitHub ActionsContributorMore actionsThere has been no activity on this feature request for 5 months. To help maintain relevant open issues, please add the never-stale
Issues and PRs exempt from automated stale handling. label or close this issue if it should be closed. If not, the issue will be automatically closed 6 months after the last non-automated comment.
For more information on how the project manages feature requests, please consult the feature request management document.- addedstaleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
on Dec 23, 2024 Still ongoing.
Reacted by Cody Ebberson, Bobby Galli and Christian- removedstaleIssues and PRs marked stale due to inactivity and scheduled for automatic closure.Issues and PRs marked stale due to inactivity and scheduled for automatic closure.
on Dec 23, 2024 any updates?
Reacted by whoisYeshua, Ilmārs, Derrick Farris and Cody Ebberson- addednever-staleIssues and PRs exempt from automated stale handling.Issues and PRs exempt from automated stale handling.
on May 5, 2025 I also struggling for using SEA with load external ESM module, since my app is quite large, I need to extract the files at startup and switch to it.
Reacted by Cody Ebberson- added a commit that references this issue
on Feb 2, 2026 - added a commit that references this issue
on Feb 2, 2026 - added 2 commits that reference this issue
on Feb 10, 2026 Fixed by #61813
Reacted by Luke Karrys, Vladimir Ivanov and Théo LUDWIGAlthough, #61813 only supports loading a bundled ESM. OP seems to intend to load other modules from within the SEA. In that case, you'd need VFS support #61478 - both CJS and ESM entrypoint only support loading the non-built-ins.
Reading through this thread, it feels like folks might be hoping for a bit of magic to get SEA features. But like almost everything in Node.js, it’s driven by volunteers fitting it into their spare time. If you really want to see SEA features move forward, the best bet is to jump in and contribute yourself, or if this is relied on by a for-profit entity, consider having them sponsor someone to develop it. Otherwise, we'll end up in that familiar loop: lots of feature requests over the years, but no one with the free time to actually write the code, it might get fixed because an existing contributor happen to have a few free nights/weekends, but there will be zero assurance about progress.
- added a commit that references this issue
on Feb 22, 2026
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsTriaged

What is the problem this feature will solve?
Nodejs version 20.15.0,
I have a .mjs file, use
node --experimental-sea-config sea-config.jsonpack as a blob,and then
npx postject hello NODE_SEA_BLOB sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2successful,but ./hello will throw
Require a ESM error.So, packing ESM module into SEA single executable is not available now.
What is the feature you are proposing to solve the problem?
Packing ESM module as a single exeutable.
What alternatives have you considered?
Another feature request is: bake v8 options into executable to run with them on, like pkg's
--optionsargument