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
In a non-ESM context normally import() can be used to bring in ESM code. Under this loader this will be true for browsers, but not NodeJS which does not include an implementation by default for scripts constructed with vm.Script.
Downstream this complicates extension development in VSCode as it means ESM packages can only be used if first transformed into a compatible syntax (usually by a bundler). Note that the extension development host appears to load extensions without using this loader, so such dynamic import restrictions will not be seen there.
At present, I can see 2 paths towards supporting dynamic import.
Supply a callback via the importModuleDynamically option (this API and those which may be needed for the implementation are marked experimental, it may be worth waiting on Roadmap for stabilization of vm modules nodejs/node#37648)
Forfeit the nodeInstrumenter option so the implementation can be simplified to just require (by far easiest and not blocked by experimental API, but will be a breaking change)
EDIT 2023-03-13: On closer inspection, it appears I read the codepath wrong. This is not an option.
In a non-ESM context normally
import()can be used to bring in ESM code. Under this loader this will be true for browsers, but not NodeJS which does not include an implementation by default for scripts constructed withvm.Script.Downstream this complicates extension development in VSCode as it means ESM packages can only be used if first transformed into a compatible syntax (usually by a bundler). Note that the extension development host appears to load extensions without using this loader, so such dynamic import restrictions will not be seen there.
At present, I can see 2 paths towards supporting dynamic import.
importModuleDynamicallyoption (this API and those which may be needed for the implementation are marked experimental, it may be worth waiting on Roadmap for stabilization of vm modules nodejs/node#37648)Forfeit thenodeInstrumenteroption so the implementation can be simplified to justrequire(by far easiest and not blocked by experimental API, but will be a breaking change)EDIT 2023-03-13: On closer inspection, it appears I read the codepath wrong. This is not an option.
Downstream issue: microsoft/vscode#130367