Javascript 使用Babel生成的AMD模块

Javascript 使用Babel生成的AMD模块,javascript,requirejs,babeljs,Javascript,Requirejs,Babeljs,我有一个现有的应用程序,所有的AMD模块为基础,并使用require.js捆绑的东西。我需要将一堆es2015 react代码作为AMD模块引入这个应用程序,并使用Babel将它们转换为AMD模块。这是我的巴别塔配置 babel: options: sourceMap: false plugins: [ 'transform-class-properties', 'transform-object-rest-spread',

我有一个现有的应用程序,所有的AMD模块为基础,并使用require.js捆绑的东西。我需要将一堆es2015 react代码作为AMD模块引入这个应用程序,并使用Babel将它们转换为AMD模块。这是我的巴别塔配置

 babel:
  options:
    sourceMap: false
    plugins: [ 'transform-class-properties', 
               'transform-object-rest-spread', 
               'transform-es2015-modules-amd']
    presets: [ 'react','es2015']
  dist: 
    files: [{
      expand: true
      cwd: "src/foo/jsx"
      src: "**/*.js"
      dest: "build/foo/js/"
      ext: ".js"
      }] 
结果如下所示工作并生成AMD模块,例如myreact.js模块:

define(["exports", "react", "prop-types"], function (exports, _react, _propTypes) {
  "use strict";
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  var _react2 = _interopRequireDefault(_react);
  var _propTypes2 = _interopRequireDefault(_propTypes);
  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : {
      default: obj
    };
  }
  var REQUIRED_FIELD_SYMBOL = "*";
  function Blah(props) {
    ...
  }
  exports.default = Blah;
});
现在,当我用define在我的其他AMD模块中使用这个AMD模块时,它是未定义的

define([..., 'foo/js/myreact'], function(..., RM) {

RM.Blah <---- this is undefied
RM.default <---- still undefied
我并没有在require.js配置文件中定义导出,所以我应该如何设置导出


基本上,我应该如何在其他AMD模块中使用我的react AMD模块?

您似乎在寻找
RM.default
-这是导出的名称,而不是
Blah
。这也是未定义的。您使用的AMD加载程序是什么?调试和检查
RM
时会得到什么?我使用的是require.js。当我在控制台中打印RM时,我得到了对象{esModule:true},因此它被拾取,但上面没有任何内容。只是一个模组和一个原型,很奇怪。是否存在可能导致属性在第一次运行时未定义的循环依赖项?
define('foo/js/myreact',["exports", "react", "prop-types"], 
   function (exports, _react, _propTypes){
..
}