Open Silic0nS0ldier opened 2 years ago
Hoping that this will be available soon so that we can start consuming ESM code in extensions?
Any updates on this one? Is there any way to import ESM code in vscode extensions?
VS Code 1.94 now ships the ESM build in the stable channel: https://code.visualstudio.com/updates/v1_94#_esm-is-shipping-for-vs-code
I tested using ESM in extensiom code and that still appears to be unsupported, but hopefully VS Code now shipping ESM means this limitation will be lifted, soon.
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.
importModuleDynamically
option (this API and those which may be needed for the implementation are marked experimental, it may be worth waiting on https://github.com/nodejs/node/issues/37648)nodeInstrumenter
option 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: https://github.com/microsoft/vscode/issues/130367