我正在尝试将命名的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__));
}