如何使用webpack导入命名的本地AMD模块?

时间:2016-05-25 12:04:47

标签: javascript webpack amd

我正在尝试将命名的AMD模块与exports一起使用,因为这是TypeScript 1.8在指定--outFile时将AMD模块写入单个文件的格式。但是,如果模块在同一文件中定义,webpack似乎无法正确处理exports

这是content.js

define('messages', [
    'require',
    'exports'
], function(require, exports) {
    'use strict';
    exports.itWorks = "It works from a local module?";
});

define([
    'require',
    'exports',
    'messages'
], function(require, exports, messages) {
    'use strict';
    exports.message = messages.itWorks;
});

存在运行时错误:

bundle.js:67 Uncaught TypeError: Cannot read property 'itWorks' of undefined

这会中断,因为在捆绑代码中__WEBPACK_LOCAL_MODULE_0__未定义,因为'messages'函数使用exports而不是返回值。

如果'messages'位于单独的文件中,则一切正常。如何在单个文件中将exports与webpack一起使用?

这是为了便于阅读而略微格式化的相关构建输出。相同的exports对象传递到两个模块(将它们的导出合并在一起??)和__WEBPACK_LOCAL_MODULE_0__设置为undefined,因此第一个模块不会传递到第二个模块:

function(module, exports, __webpack_require__) {

    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_LOCAL_MODULE_0__;
    var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;

    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports],
     __WEBPACK_LOCAL_MODULE_0__ = (function(require, exports) {
        'use strict';
        exports.itWorks = "It works from a local module?";
    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)));

    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __WEBPACK_LOCAL_MODULE_0__],
     __WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, messages) {
        'use strict';
        exports.message = messages.itWorks;
    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),

     __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
}

0 个答案:

没有答案