From 590e8d37e902f8ebff36ec2f8c630ecaad06910d Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Thu, 28 Jun 2018 12:15:15 +0530 Subject: [PATCH] module: use compileFunction over Module.wrap Use vm.compileFunction (which is a binding for v8::CompileFunctionInContext) instead of Module.wrap internally in Module._compile for the cjs loader. Fixes: https://github.com/nodejs/node/issues/17396 Backport-PR-URL: https://github.com/nodejs/node/pull/27124 PR-URL: https://github.com/nodejs/node/pull/21573 Reviewed-By: James M Snell Reviewed-By: Ruben Bridgewater Reviewed-By: Gus Caplan Reviewed-By: Joyee Cheung Reviewed-By: Anna Henningsen --- lib/internal/modules/cjs/loader.js | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index 305a11b322012d..50fc2d418be622 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -673,19 +673,13 @@ Module.prototype._compile = function(content, filename) { content = stripShebang(content); - // create wrapper function - var wrapper = Module.wrap(content); - - var compiledWrapper = vm.runInThisContext(wrapper, { - filename: filename, - lineOffset: 0, - displayErrors: true, - importModuleDynamically: experimentalModules ? async (specifier) => { - if (asyncESM === undefined) lazyLoadESM(); - const loader = await asyncESM.loaderPromise; - return loader.import(specifier, normalizeReferrerURL(filename)); - } : undefined, - }); + const compiledWrapper = vm.compileFunction(content, [ + 'exports', + 'require', + 'module', + '__filename', + '__dirname', + ], { filename }); var inspectorWrapper = null; if (process._breakFirstLine && process._eval == null) {