Skip to content

Commit 020f647

Browse files
authored
Undefining a module no longer undefines special modules, issue #128 (#130)
1 parent ed602b7 commit 020f647

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/loader.ts

+4
Original file line numberDiff line numberDiff line change
@@ -1099,9 +1099,13 @@ declare const Packages: {} | undefined;
10991099
requireModule.undef = function (id: string, recursive?: boolean): void {
11001100
const module: Module | undefined = modules[id];
11011101
const undefDeps = function (mod: Module): void {
1102+
if (mod === commonJsRequireModule || mod === commonJsModuleModule || mod === commonJsExportsModule) {
1103+
return;
1104+
}
11021105
if (mod.deps) {
11031106
forEach(mod.deps, undefDeps);
11041107
}
1108+
11051109
modules[mod.mid] = undefined;
11061110
};
11071111
if (module) {

tests/unit/require.ts

+32
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,38 @@ registerSuite({
709709
}
710710
},
711711

712+
'important modules are not undefined'(this: any) {
713+
let dfd = this.async(DEFAULT_TIMEOUT);
714+
715+
global.define('undef-module', ['require', 'module', 'exports'], (require: any, module: any, exports: any) => {
716+
return {
717+
require,
718+
module,
719+
exports
720+
};
721+
});
722+
723+
global.require(['undef-module'], function () {
724+
global.require.undef('undef-module', true);
725+
726+
global.define('undef-module-2', ['require', 'module', 'exports'], (require: any, module: any, exports: any) => {
727+
return {
728+
require,
729+
module,
730+
exports
731+
};
732+
});
733+
734+
assert.doesNotThrow(() => {
735+
global.require(['undef-module-2'], dfd.callback((defs: any) => {
736+
assert.isTrue(defs.require !== undefined);
737+
assert.isTrue(defs.module !== undefined);
738+
assert.isTrue(defs.exports !== undefined);
739+
}));
740+
});
741+
});
742+
},
743+
712744
'cache injected module is properly undefined'(this: any) {
713745
let dfd = this.async(DEFAULT_TIMEOUT);
714746

0 commit comments

Comments
 (0)