Skip to content

Commit

Permalink
Do not export null as module.exports in amd.js. Resolves #2332. (#2334)
Browse files Browse the repository at this point in the history
* Do not export null as module.exports in amd.js. Resolves #2332.

* Make named-exports and system-core resilient to _export(null)

* Comment

* Guy's feedback
  • Loading branch information
joeldenning committed Jun 7, 2021
1 parent 91a2991 commit a9a0f34
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/extras/named-exports.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
// hook the _export function to note the default export
var defaultExport, hasDefaultExport = false;
var declaration = registerDeclare.call(this, function (name, value) {
if (typeof name === 'object' && name.__useDefault)
if (typeof name === 'object' && name && name.__useDefault)
defaultExport = name.default, hasDefaultExport = true;
else if (name === 'default')
defaultExport = value;
Expand Down
2 changes: 1 addition & 1 deletion src/system-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export function getOrCreateLoad (loader, id, firstParentUrl) {
}
}

if (name.__esModule) {
if (name && name.__esModule) {
ns.__esModule = name.__esModule;
}
}
Expand Down
7 changes: 7 additions & 0 deletions test/browser/amd.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ suite('AMD tests', function () {
});
});

// https://github.com/systemjs/systemjs/issues/2332
test('loading an AMD module that sets module.exports to null', function () {
return System.import('fixtures/amd-null-module.js').then(function (m) {
assert.equal(m.default, null);
});
});

test('Throws an error when define() is called incorrectly', () => {
try {
define("strings are invalid amd modules");
Expand Down
3 changes: 3 additions & 0 deletions test/fixtures/browser/amd-null-module.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
define([], function () {
return null;
});

0 comments on commit a9a0f34

Please sign in to comment.