diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js index f3d97781e2a652..ed433e1b8744ea 100644 --- a/lib/internal/modules/cjs/loader.js +++ b/lib/internal/modules/cjs/loader.js @@ -432,6 +432,7 @@ function resolveBasePath(basePath, exts, isMain, trailingSlash, request) { } function trySelf(parentPath, isMain, request) { + if (!experimentalModules) return false; const { data: pkg, path: basePath } = readPackageScope(parentPath) || {}; if (!pkg || pkg.exports === undefined) return false; if (typeof pkg.name !== 'string') return false; diff --git a/test/es-module/test-esm-flagged-self.js b/test/es-module/test-esm-flagged-self.js new file mode 100644 index 00000000000000..43a0c4f9684bf0 --- /dev/null +++ b/test/es-module/test-esm-flagged-self.js @@ -0,0 +1,16 @@ +'use strict'; + +require('../common'); +const assert = require('assert'); +const path = require('path'); +const { createRequireFromPath } = require('module'); + +const fixturesRequire = + createRequireFromPath(path.resolve(__dirname, '../fixtures/_')); + +try { + fixturesRequire('pkgexports/resolve-self'); + assert(false); +} catch (e) { + assert.strictEqual(e.code, 'MODULE_NOT_FOUND'); +}