Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Assign a cached module's exports before requiring another

This makes sprockets-commonjs compliant with the "Module context"
contract, paragraph 1.3: "[...]the object returned by "require" must
contain at least the exports that the foreign module has
prepared[...]".

Some code bases use the (not yet specified/clarified in CommonJS)
method of assigning exports to export things. If, in these code bases,
they then go on to require more code that depends on the previous
module's exports, that new code won't see these exports unless we
re-cache the exports here, thus breaking that paragraph above.
  • Loading branch information...
commit f94897ba0e93d2d3c33260f390f9a1843244955c 1 parent 4dc97c2
@antifuchs antifuchs authored
Showing with 1 addition and 0 deletions.
  1. +1 −0  lib/assets/javascripts/sprockets/commonjs.js
View
1  lib/assets/javascripts/sprockets/commonjs.js
@@ -11,6 +11,7 @@
module = {id: path, exports: {}};
cache[path] = module.exports;
fn(module.exports, function(name) {
+ cache[path] = module.exports;
return require(name, dirname(path));
}, module);
return cache[path] = module.exports;
Please sign in to comment.
Something went wrong with that request. Please try again.