From 1941dbbd71c6d6730ca78b21ef2fd20f51124950 Mon Sep 17 00:00:00 2001 From: dave caruso Date: Tue, 8 Aug 2023 19:37:36 -0700 Subject: [PATCH] Set exports to {} in user-constructed CommonJSModuleRecords (#4076) --- src/bun.js/modules/NodeModuleModule.h | 4 ++++ test/js/node/module/node-module-module.test.js | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/bun.js/modules/NodeModuleModule.h b/src/bun.js/modules/NodeModuleModule.h index 0be647c392..7c8f6ee143 100644 --- a/src/bun.js/modules/NodeModuleModule.h +++ b/src/bun.js/modules/NodeModuleModule.h @@ -138,6 +138,10 @@ JSC_DEFINE_HOST_FUNCTION(jsFunctionNodeModuleModuleConstructor, out->putDirect(vm, JSC::Identifier::fromString(vm, "parent"_s), parentValue, 0); + out->putDirect(vm, JSC::Identifier::fromString(vm, "exports"_s), + JSC::constructEmptyObject(globalObject, + globalObject->objectPrototype(), 0), + 0); return JSValue::encode(out); } diff --git a/test/js/node/module/node-module-module.test.js b/test/js/node/module/node-module-module.test.js index 58a81fb98a..08955a7b7c 100644 --- a/test/js/node/module/node-module-module.test.js +++ b/test/js/node/module/node-module-module.test.js @@ -26,8 +26,11 @@ test("Module exists", () => { expect(Module).toBeDefined(); }); -test("module.Module exists", () => { +test("module.Module works", () => { expect(Module.Module === Module).toBeTrue(); + + const m = new Module("asdf"); + expect(m.exports).toEqual({}); }); test("_nodeModulePaths() works", () => {