首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含角度2-moment的Angular2 'require is not a function‘

包含角度2-moment的Angular2 'require is not a function‘
EN

Stack Overflow用户
提问于 2016-07-30 16:21:25
回答 2查看 617关注 0票数 2

我试图将angular2-moment库引入到我的angular2项目中,但似乎无法让SystemJS合作。

代码语言:javascript
复制
<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库中导入。

代码语言:javascript
复制
import {TimeAgoPipe} from 'angular2-moment';

这将导致以下控制台错误:

代码语言:javascript
复制
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如下:

代码语言:javascript
复制
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

在正确的方向上的任何步骤都是非常感谢的!

EN

回答 2

Stack Overflow用户

发布于 2016-08-03 11:18:52

您正在尝试使用'/node_modules/angular2-moment‘访问'angular2-moment’包,这似乎是不正确的,

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

代码语言:javascript
复制
<script>
  System.config({
   map: { 'angular2-moment': '/node_modules/angular2-moment' },
   packages: {
      'angular2-moment': { 'main': 'index'  }
   }
 });
</script>
票数 0
EN

Stack Overflow用户

发布于 2016-08-08 16:13:16

如果你克隆了angular2-moment,然后编译它来使用你选择的模块类型,会怎么样?看起来它是在做一个commonjs,但是你有来自node的服务器端脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38671902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档