diff --git a/lib/get-exports.js b/lib/get-exports.js index ce7576d..ddb81e1 100644 --- a/lib/get-exports.js +++ b/lib/get-exports.js @@ -49,7 +49,7 @@ async function getCjsExports (url, context, parentLoad, source) { // Resolve the re-exported module relative to the current module. const newUrl = pathToFileURL(require.resolve(re, { paths: [dirname(fileURLToPath(url))] })).href - if (newUrl.endsWith('.node')) { + if (newUrl.endsWith('.node') || newUrl.endsWith('.json')) { return } diff --git a/test/fixtures/re-export-cjs-json.js b/test/fixtures/re-export-cjs-json.js new file mode 100644 index 0000000..736a6f5 --- /dev/null +++ b/test/fixtures/re-export-cjs-json.js @@ -0,0 +1 @@ +module.exports = require('./something.json') diff --git a/test/hook/re-export-cjs.mjs b/test/hook/re-export-cjs.mjs index 8419ca9..fa491c5 100644 --- a/test/hook/re-export-cjs.mjs +++ b/test/hook/re-export-cjs.mjs @@ -1,7 +1,8 @@ import Hook from '../../index.js' import foo from '../fixtures/re-export-cjs-built-in.js' import foo2 from '../fixtures/re-export-cjs.js' -import { strictEqual } from 'assert' +import foo3 from '../fixtures/re-export-cjs-json.js' +import { deepStrictEqual, strictEqual } from 'assert' Hook((exports, name) => { if (name.endsWith('fixtures/re-export-cjs-built-in.js')) { @@ -13,7 +14,13 @@ Hook((exports, name) => { strictEqual(exports.default, 'bar') exports.default = '2' } + + if (name.endsWith('fixtures/re-export-cjs-json.js')) { + deepStrictEqual(exports.default, { data: 'dog' }) + exports.default = '3' + } }) strictEqual(foo, '1') strictEqual(foo2, '2') +strictEqual(foo3, '3')