You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Node.js built-in module support in the vm context #46558
Scripts/Modules running in the context created with vm.createContext can not access various Node.js built-in apis/modules like URL, node:assert, node:http, etc. This makes it cumbersome to create a disposable context for use cases like hot-module-reload to run existing node.js apps.
We can provide a built-in API to create a context (or a new NodeRealm for compatibility) with full-fledged Node.js built-in modules support. It allows object exchanges between realms and shares the same loop with the main context.
, similar to the existing vm.context.
I'm experimenting with a local setup to expose Web globals like URL in ShadowRealm (based on #46556). I believe many infrastructures can be shared between ShadowRealm and the NodeRealm. The following steps for NodeRealm can be:
Defines the APIs to create a VM context with Node.js built-ins.
CommonJS (e.g. createRequire from the outer realm).
There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.
There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be closed 6 months after the last non-automated comment.
There has been no activity on this feature request for 5 months. To help maintain relevant open issues, please add the
never-staleIssues 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.
@karankraina not really. You are exposing the parent native objects, while we are talking about exposing them natively in child. This would ensure safety.
Activity
cjihrig commentedon Feb 8, 2023
Thanks for opening this @legendecas. Do you have any plan or idea for next steps towards a
NodeRealm?legendecas commentedon Feb 9, 2023
I'm experimenting with a local setup to expose Web globals like
URLin ShadowRealm (based on #46556). I believe many infrastructures can be shared between ShadowRealm and theNodeRealm. The following steps forNodeRealmcan be:createRequirefrom the outer realm).importfrom the outer realm).vm.Scriptandvm.Module)NodeRealm(Similar to https://docs.google.com/document/d/12_CkX6KbM9kt_lj1pdEgLB8-HQaozkJb7_nwQnHfTTg/edit#heading=h.drlp0amd3twr):globalThis.processevents likeuncaughtExceptionandunhandledRejection.node:v8andprocess.exit.NodeRealm:NodeRealm.mcollina commentedon Feb 9, 2023
Regarding
process.exit(): it should "close" the Realm, similarly to how it works inworker_threadsSimenB commentedon Feb 14, 2023
This is sorta #28823 and #31852, right?
legendecas commentedon Feb 14, 2023
Effectively, yes.
github-actions commentedon Aug 14, 2023
There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be 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.
github-actions commentedon Feb 13, 2024
There has been no activity on this feature request for 5 months and it is unlikely to be implemented. It will be 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.
github-actions commentedon Aug 12, 2024
There has been no activity on this feature request for 5 months. To help maintain relevant open issues, please add the never-staleIssues 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.
karankraina commentedon Oct 12, 2024
@mcollina @cjihrig @addaleax I tried to achieve something of this sort in my project and ended up creating a package.
Can you guys have a look and see if this is relevant to what we need here ?
https://github.com/karankraina/safer-vm/blob/main/src/context.ts
The idea is from node core only -
node/lib/repl.js
Line 204 in c7e4209
mcollina commentedon Oct 15, 2024
@karankraina not really. You are exposing the parent native objects, while we are talking about exposing them natively in child. This would ensure safety.