diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js index 34a9a140dd7732..881115a880f6c9 100644 --- a/lib/internal/modules/esm/translators.js +++ b/lib/internal/modules/esm/translators.js @@ -136,39 +136,13 @@ translators.set('builtin', async function builtinStrategy(url) { translators.set('json', async function jsonStrategy(url) { debug(`Translating JSONModule ${url}`); debug(`Loading JSONModule ${url}`); - const pathname = url.startsWith('file:') ? fileURLToPath(url) : null; - let modulePath; - let module; - if (pathname) { - modulePath = isWindows ? - StringPrototype.replace(pathname, winSepRegEx, '\\') : pathname; - module = CJSModule._cache[modulePath]; - if (module && module.loaded) { - const exports = module.exports; - return new ModuleWrap(url, undefined, ['default'], function() { - this.setExport('default', exports); - }); - } - } const content = `${await getSource(url)}`; - if (pathname) { - // A require call could have been called on the same file during loading and - // that resolves synchronously. To make sure we always return the identical - // export, we have to check again if the module already exists or not. - module = CJSModule._cache[modulePath]; - if (module && module.loaded) { - const exports = module.exports; - return new ModuleWrap(url, undefined, ['default'], function() { - this.setExport('default', exports); - }); - } - } try { const exports = JsonParse(stripBOM(content)); - module = { - exports, - loaded: true - }; + return new ModuleWrap(url, undefined, ['default'], function() { + debug(`Parsing JSONModule ${url}`); + this.setExport('default', exports); + }); } catch (err) { // TODO (BridgeAR): We could add a NodeCore error that wraps the JSON // parse error instead of just manipulating the original error message. @@ -177,13 +151,6 @@ translators.set('json', async function jsonStrategy(url) { err.message = errPath(url) + ': ' + err.message; throw err; } - if (pathname) { - CJSModule._cache[modulePath] = module; - } - return new ModuleWrap(url, undefined, ['default'], function() { - debug(`Parsing JSONModule ${url}`); - this.setExport('default', module.exports); - }); }); // Strategy for loading a wasm module diff --git a/test/es-module/test-esm-json-cache.mjs b/test/es-module/test-esm-json-cache.mjs index d08f852e255a78..bc51259ecd9a85 100644 --- a/test/es-module/test-esm-json-cache.mjs +++ b/test/es-module/test-esm-json-cache.mjs @@ -1,16 +1,15 @@ // Flags: --experimental-json-modules import '../common/index.mjs'; -import { strictEqual, deepStrictEqual } from 'assert'; - -import { createRequireFromPath as createRequire } from 'module'; +import { strictEqual, notStrictEqual, deepStrictEqual } from 'assert'; +import { createRequire } from 'module'; import { fileURLToPath as fromURL } from 'url'; import mod from '../fixtures/es-modules/json-cache/mod.cjs'; import another from '../fixtures/es-modules/json-cache/another.cjs'; import test from '../fixtures/es-modules/json-cache/test.json'; -const require = createRequire(fromURL(import.meta.url)); +const require = createRequire(import.meta.url); const modCjs = require('../fixtures/es-modules/json-cache/mod.cjs'); const anotherCjs = require('../fixtures/es-modules/json-cache/another.cjs'); @@ -18,8 +17,8 @@ const testCjs = require('../fixtures/es-modules/json-cache/test.json'); strictEqual(mod.one, 1); strictEqual(another.one, 'zalgo'); -strictEqual(test.one, 'it comes'); +strictEqual(test.one, 1); deepStrictEqual(mod, modCjs); deepStrictEqual(another, anotherCjs); -deepStrictEqual(test, testCjs); +notStrictEqual(test, testCjs);