Merge pull request #155 from systemjs/cjs-module-exports

commonjs exports fix, dynamic register adjustments
This commit is contained in:
Guy Bedford 2014-07-30 16:24:30 -07:00
commit ac37ff9c52
5 changed files with 21 additions and 13 deletions

View File

@ -71,7 +71,7 @@ function cjs(loader) {
load.metadata.executingRequire = true;
load.metadata.execute = function(require, exports, moduleName) {
load.metadata.execute = function(require, exports, module) {
var dirname = (load.address || '').split('/');
dirname.pop();
dirname = dirname.join('/');
@ -79,7 +79,7 @@ function cjs(loader) {
var globals = loader.global._g = {
global: loader.global,
exports: exports,
module: { exports: exports },
module: module,
process: nodeProcess,
require: require,
__filename: load.address,
@ -101,8 +101,6 @@ function cjs(loader) {
loader.global.define = define;
loader.global._g = undefined;
return globals.module.exports;
}
}

View File

@ -337,7 +337,7 @@ function register(loader) {
exports = entry.module.exports;
}
return exports.__useDefault ? exports['default'] : exports;
return exports;
}
function linkDynamicModule(entry, loader) {
@ -345,9 +345,8 @@ function register(loader) {
return;
var exports = {};
var module = { 'default': exports, __useDefault: true };
entry.module = { exports: module };
var module = entry.module = { exports: exports, id: entry.name };
// AMD requires execute the tree first
if (!entry.executingRequire) {
@ -359,9 +358,6 @@ function register(loader) {
}
}
// lookup the module name if it is in the registry
var moduleName = entry.name;
// now execute
entry.evaluated = true;
var output = entry.execute.call(loader.global, function(name) {
@ -370,10 +366,10 @@ function register(loader) {
continue;
return getModule(entry.normalizedDeps[i], loader);
}
}, exports, moduleName);
}, exports, module);
if (output)
module['default'] = output;
module.exports = output;
}
/*
@ -547,7 +543,7 @@ function register(loader) {
// remove from the registry
loader.defined[load.name] = undefined;
var module = loader.newModule(entry.module.exports);
var module = loader.newModule(entry.declarative ? entry.module.exports : { 'default': entry.module.exports, '__useDefault': true });
entry.module.module = module;
// if the entry is an alias, set the alias too

View File

@ -268,6 +268,13 @@ asyncTest('Loading a CommonJS module with this', function() {
}, err);
});
asyncTest('CommonJS setting module.exports', function() {
System['import']('tests/cjs-exports').then(function(m) {
ok(m.e = 'export');
start();
}, err);
});
asyncTest('Loading a UMD module', function() {
System['import']('tests/umd').then(function(m) {
ok(m.d == 'hi', 'module value not defined');

View File

@ -0,0 +1 @@
exports.e = require('./cjs-exports')();

View File

@ -0,0 +1,6 @@
module.exports = F;
require('./cjs-exports-dep');
function F() {
return 'export';
}
module.exports = require('./cjs-exports-dep');