Skip to content

Commit bcc0331

Browse files
guybedfordcoreyfarrell
authored andcommitted
tweak importModuleDynamically inlining
1 parent da3f505 commit bcc0331

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

lib/internal/process/execution.js

+10-15
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ function evalModule(source, print) {
5757
function evalScript(name, body, breakFirstLine, print) {
5858
const CJSModule = require('internal/modules/cjs/loader').Module;
5959
const { kVmBreakFirstLineSymbol } = require('internal/util');
60+
const { pathToFileURL } = require('url');
6061

6162
const cwd = tryGetCwd();
6263
const origModule = global.module; // Set e.g. when called from the REPL.
@@ -65,35 +66,29 @@ function evalScript(name, body, breakFirstLine, print) {
6566
module.filename = path.join(cwd, name);
6667
module.paths = CJSModule._nodeModulePaths(cwd);
6768

68-
let fileURL;
69-
module.importModuleDynamically = async (specifier) => {
70-
if (!fileURL) {
71-
const { pathToFileURL } = require('url');
72-
fileURL = pathToFileURL(path.join(cwd, name)).href;
73-
}
69+
global.kVmBreakFirstLineSymbol = kVmBreakFirstLineSymbol;
70+
global.asyncESM = require('internal/process/esm_loader');
7471

75-
const asyncESM = require('internal/process/esm_loader');
76-
const loader = await asyncESM.ESMLoader;
77-
return loader.import(specifier, fileURL);
78-
};
72+
const baseUrl = pathToFileURL(module.filename).href;
7973

80-
global.kVmBreakFirstLineSymbol = kVmBreakFirstLineSymbol;
8174
const script = `
8275
global.__filename = ${JSONStringify(name)};
8376
global.exports = exports;
8477
global.module = module;
8578
global.__dirname = __dirname;
8679
global.require = require;
87-
const { kVmBreakFirstLineSymbol } = global;
80+
const { kVmBreakFirstLineSymbol, asyncESM } = global;
8881
delete global.kVmBreakFirstLineSymbol;
89-
const { importModuleDynamically } = module;
90-
delete module.importModuleDynamically;
82+
delete global.asyncESM;
9183
return require("vm").runInThisContext(
9284
${JSONStringify(body)}, {
9385
filename: ${JSONStringify(name)},
9486
displayErrors: true,
9587
[kVmBreakFirstLineSymbol]: ${!!breakFirstLine},
96-
importModuleDynamically
88+
async importModuleDynamically (specifier) {
89+
const loader = await asyncESM.ESMLoader;
90+
return loader.import(specifier, ${JSONStringify(baseUrl)});
91+
}
9792
});\n`;
9893
const result = module._compile(script, `${name}-wrapper`);
9994
if (print) {

0 commit comments

Comments
 (0)