summaryrefslogtreecommitdiff
path: root/lib/internal/bootstrap/node.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/bootstrap/node.js')
-rw-r--r--lib/internal/bootstrap/node.js35
1 files changed, 24 insertions, 11 deletions
diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
index dec4f12ea6..8f38bff448 100644
--- a/lib/internal/bootstrap/node.js
+++ b/lib/internal/bootstrap/node.js
@@ -240,17 +240,6 @@ function startup() {
'DeprecationWarning', 'DEP0062', startup, true);
}
- const experimentalModules = getOptionValue('--experimental-modules');
- const experimentalVMModules = getOptionValue('--experimental-vm-modules');
- if (experimentalModules || experimentalVMModules) {
- if (experimentalModules) {
- process.emitWarning(
- 'The ESM module loader is experimental.',
- 'ExperimentalWarning', undefined);
- }
- NativeModule.require('internal/process/esm_loader').setup();
- }
-
const { deprecate } = NativeModule.require('internal/util');
{
// Install legacy getters on the `util` binding for typechecking.
@@ -445,6 +434,30 @@ function prepareUserCodeExecution() {
delete process.env.NODE_UNIQUE_ID;
}
+ const experimentalModules = getOptionValue('--experimental-modules');
+ const experimentalVMModules = getOptionValue('--experimental-vm-modules');
+ if (experimentalModules || experimentalVMModules) {
+ if (experimentalModules) {
+ process.emitWarning(
+ 'The ESM module loader is experimental.',
+ 'ExperimentalWarning', undefined);
+ }
+
+ const {
+ setImportModuleDynamicallyCallback,
+ setInitializeImportMetaObjectCallback
+ } = internalBinding('module_wrap');
+ const esm = NativeModule.require('internal/process/esm_loader');
+ // Setup per-isolate callbacks that locate data or callbacks that we keep
+ // track of for different ESM modules.
+ setInitializeImportMetaObjectCallback(esm.initializeImportMetaObject);
+ setImportModuleDynamicallyCallback(esm.importModuleDynamicallyCallback);
+ const userLoader = getOptionValue('--loader');
+ // If --loader is specified, create a loader with user hooks. Otherwise
+ // create the default loader.
+ esm.initializeLoader(process.cwd(), userLoader);
+ }
+
// For user code, we preload modules if `-r` is passed
const preloadModules = getOptionValue('--require');
if (preloadModules) {