Angular2包括angular2-moment'require'不是函数'

时间:2016-07-30 08:21:25

标签: angular

我正在尝试将angular2-moment库引入我的angular2项目,但我似乎无法让SystemJS合作。

<script src="lib/es6-shim.min.js"></script>
<script src="lib/angular2-polyfills.js"></script>
<script src="lib/traceur-runtime.js"></script>
<script src="lib/system-csp-production.src.js"></script>
<script src="lib/Reflect.js"></script>

<script>
  System.config({
    map: {
      'angular2-moment': '/node_modules/angular2-moment',
    },
    packages: {
      '/node_modules/angular2-moment': {
        'main': 'index'
      }
  }
});
</script>

<script src="lib/angular2.js"></script>
<script src="lib/router.js"></script>
<script src="lib/http.js"></script>
<script src="lib/Rx.js"></script>

<script>
  System.import('app').catch(console.log.bind(console)); //loads my app
</script>

我的应用程序正常使用此配置,直到我尝试从我的应用程序中的angular2-moment库导入。

import {TimeAgoPipe} from 'angular2-moment';

导致以下控制台错误:

Uncaught TypeError: require is not a function

Error: (SystemJS) http://website.dev/node_modules/angular2-moment/index.js did not call System.register or AMD define. If loading a global module configure the global name via the meta exports property for script injection support

现在乍一看,我觉得SystemJS期待不同的模块类型,但我尝试过添加格式:“esm”或“common”到包配置无济于事。错误是正确的(模块中没有System.register,而是导出功能)但我不确定如何修复它。

angular2-moment的index.js如下所示:

function __export(m) {
    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
__export(require('./CalendarPipe'));
__export(require('./DateFormatPipe'));
__export(require('./DurationPipe'));
__export(require('./FromUnixPipe'));
__export(require('./TimeAgoPipe'));
//# sourceMappingURL=index.js.map

非常感谢正确方向的任何步骤!

2 个答案:

答案 0 :(得分:0)

您正试图访问&#39; angular2-moment&#39;包使用&#39; / node_modules / angular2-moment&#39;,这似乎不正确,

更新您的脚本配置,如下所示

<script>
  System.config({
   map: { 'angular2-moment': '/node_modules/angular2-moment' },
   packages: {
      'angular2-moment': { 'main': 'index'  }
   }
 });
</script>

希望这会有所帮助!!

答案 1 :(得分:0)

如果您克隆angular2-moment,然后将其编译为使用您选择的模块类型,该怎么办?看起来它正在做一个commonjs,但你有来自节点的服务器端脚本。