在同一文件中定义时将一个amd模块注入另一个模块

时间:2018-08-06 08:27:21

标签: javascript typescript bundle amd ecmascript-5

当使用同一文件中定义的AMD时,我有一个模块注入另一个模块的问题。我将TypeScript代码与AMD一起转换为ES5,并转换为单个文件。当我尝试将其输出到每个模块的文件然后使用r.js捆绑时,我遇到的问题完全相同。这是一个示例:

define("module1", ["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var Module1= /** @class */ (function () {
        function Module1(prop) {
            this.prop= prop;
        }
        return Module1;
    }());
    exports.Module1= Module1;
});
define("module2", ["require", "exports", "module1"], function (require, exports, module1_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var Module2= /** @class */ (function (_super) {
        __extends(Module2, _super);
        function Module2(prop2, prop) {
            var _this = _super.call(this, prop) || this;
            _this.prop2 = prop2;
            return _this;
        }
        return Module2;
    }(module1_1.Module1));
    exports.Module2 = Module2;
});

__ extends 在文件的开头定义。问题是 module2 代替了 module1 而获得了 undefined 。有趣的是,当在 module2 定义中时, exports 对象具有 Module1 属性。

任何人都可以帮助并解释这种行为的原因是什么

0 个答案:

没有答案