From c57f1e0801462ce0691416fb90d513117147c689 Mon Sep 17 00:00:00 2001 From: Alexandre Breteau Date: Fri, 19 Oct 2018 01:08:11 +0200 Subject: [PATCH] fix(gatsby): ignore `__esModule` property when resolving module exports (#9226) --- .../src/bootstrap/__tests__/resolve-module-exports.js | 9 +++++++++ packages/gatsby/src/bootstrap/resolve-module-exports.js | 3 +++ 2 files changed, 12 insertions(+) diff --git a/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js b/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js index 25898b9d13c0d..9a253157d4a4b 100644 --- a/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js +++ b/packages/gatsby/src/bootstrap/__tests__/resolve-module-exports.js @@ -107,6 +107,10 @@ describe(`Resolve module exports`, () => { return createElement(ReplaceComponentRenderer, { ...props, loader }) } `, + "/esmodule/export": ` + exports.__esModule = true; + exports.foo = ''; + `, } beforeEach(() => { @@ -165,4 +169,9 @@ describe(`Resolve module exports`, () => { const result = resolveModuleExports(`/realistic/export`, resolver) expect(result).toEqual([`replaceHistory`, `replaceComponentRenderer`]) }) + + it(`Ignores exports.__esModule`, () => { + const result = resolveModuleExports(`/esmodule/export`, resolver) + expect(result).toEqual([`foo`]) + }) }) diff --git a/packages/gatsby/src/bootstrap/resolve-module-exports.js b/packages/gatsby/src/bootstrap/resolve-module-exports.js index 9c3704001a5f0..30057db5361fe 100644 --- a/packages/gatsby/src/bootstrap/resolve-module-exports.js +++ b/packages/gatsby/src/bootstrap/resolve-module-exports.js @@ -75,6 +75,9 @@ module.exports = (modulePath, resolver = require.resolve) => { if (nodeLeft.type !== `MemberExpression`) return + // ignore marker property `__esModule` + if (get(nodeLeft, `property.name`) === `__esModule`) return + // get foo from `exports.foo = bar` if (get(nodeLeft, `object.name`) === `exports`) { isCommonJS = true