diff --git a/lib/runtime/utils.js b/lib/runtime/utils.js index df8db147..aebddb99 100644 --- a/lib/runtime/utils.js +++ b/lib/runtime/utils.js @@ -70,7 +70,7 @@ function setESModule(exported) { configurable: true, enumerable: false, value: true, - writable: false + writable: true }); } } diff --git a/test/misc-tests.js b/test/misc-tests.js index 97b5ff29..c7f8a59b 100644 --- a/test/misc-tests.js +++ b/test/misc-tests.js @@ -92,3 +92,9 @@ describe("object-like module.exports", () => { assert.strictEqual(typeof forEach, "function"); }); }); + +describe("setEsModule", () => { + it("should not error if __esModule is set before or after setEsModule is called", () => { + import './misc/__esModule-export-after'; + }); +}); diff --git a/test/misc/__esModule-export-after.js b/test/misc/__esModule-export-after.js new file mode 100644 index 00000000..e1962a57 --- /dev/null +++ b/test/misc/__esModule-export-after.js @@ -0,0 +1,3 @@ +import './__esModule-export-before.js'; + +exports.__esModule = true diff --git a/test/misc/__esModule-export-before.js b/test/misc/__esModule-export-before.js new file mode 100644 index 00000000..0816829e --- /dev/null +++ b/test/misc/__esModule-export-before.js @@ -0,0 +1,10 @@ +Object.defineProperty(module.exports, '__esModule', { + configurable: false, + enumerable: false, + value: true, + writable: false +}); + +module.export({ + a: () => 5 +});