【问题标题】:Angular 2: TypeError: core_1.NgModule is not a functionAngular 2:TypeError:core_1.NgModule 不是函数
【发布时间】:2017-01-27 16:46:01
【问题描述】:

我正在运行在这里找到的教程:

https://www.angular-meteor.com/tutorials/socially/angular2/search-sort-pagination-and-reactive-vars

我正处于实现分页的地步,但它抛出了一个错误。控制台在第7行的party-list.component.ts中抛出错误。第7行的代码是:

import { PaginationService, PaginationControlsCmp } from 'ng2-pagination'; 

抛出的 FULL 错误是:

 ng2-pagination.js:26Uncaught TypeError: core_1.NgModule is not a function

我在想也许 ng2-pagination 与我在流星中运行的 Angular 版本不兼容,但不知道如何找出答案。

我的 package.js 文件:

{
  "name": "angular2-meteor-base",
  "private": true,
  "scripts": {
    "start": "meteor run",
    "test": "meteor test --driver-package practicalmeteor:mocha",
    "test:ci": "meteor test --once --driver-package dispatch:mocha-phantomjs"
  },
  "devDependencies": {
    "chai": "3.5.0",
    "chai-spies": "0.7.1"
  },
  "dependencies": {
    "@angular/common": "2.0.0-rc.4",
    "@angular/compiler": "2.0.0-rc.4",
    "@angular/core": "2.0.0-rc.4",
    "@angular/forms": "0.2.0",
    "@angular/platform-browser": "2.0.0-rc.4",
    "@angular/platform-browser-dynamic": "2.0.0-rc.4",
    "@angular/router": "3.0.0-alpha.8",
    "angular2-meteor": "0.6.2",
    "angular2-meteor-accounts-ui": "^0.6.1",
    "angular2-meteor-auto-bootstrap": "0.6.0",
    "angular2-meteor-polyfills": "0.1.1",
    "angular2-meteor-tests-polyfills": "0.0.2",
    "es6-shim": "0.35.1",
    "meteor-node-stubs": "0.2.3",
    "ng2-pagination": "https://registry.npmjs.org/ng2-pagination/-/ng2-pagination-0.4.1.tgz",
    "reflect-metadata": "0.1.3",
    "rxjs": "5.0.0-beta.6",
    "zone.js": "0.6.12"
  }
}

【问题讨论】:

  • 您的想法很好 - 您的 ng2-bootstrap 版本与您的 Angular 2 版本不兼容,遇到了同样的问题。我建议您将所有 Angular 2 包和 ng2-bootstrap 更新到最新版本。
  • @StefanSvrkota ,有没有简单的方法可以做到这一点?
  • 您可以在package.json 文件中找到最新的Angular 2 版本,您应该更新自己的版本以与官方版本一样:angular.io/docs/ts/latest/… ng2-bootstrap 的最新版本是1.1.5npmjs.com/package/ng2-bootstrap
  • 我添加了我的 package.js 文件。我在流星里面跑,所以我不清楚我应该更新哪些包
  • 您应该从 package.js 更改您的依赖项,以匹配我提供的链接中来自 package.json 的依赖项。例如,"@angular/common": "2.0.0-rc.4" 应该是 "@angular/common": "2.0.0" 等。

标签: javascript meteor angular pagination angular2-meteor


【解决方案1】:

ng2-pagination 包使用了新的NgModule(在 angular2 RC5 中引入,正如@StefanSvrkota 在问题 cmets 中强调的那样),因为版本 0.4.0,于 2016 年 9 月 9 日在 npm 中发布。

你会注意到这个包的更新独立于你正在使用的 Angular2-meteor 教程。

简单的事情是软件包作者在其最新版本中引入了对等依赖(在 angular2 版本上)兼容性问题。

NgModule 还没有使用时,你应该可以使用以前版本的包:

$ npm uninstall --save ng2-pagination
$ npm install --save ng2-pagination@~0.3.0 # allow only patch version update

这应该给你< 0.4.0的版本,即0.3.5当前。

【讨论】:

  • 没用...但现在出现了不同的错误::modules.js:_angular_core.createPlatformFactory 不是函数
  • 最后一个错误是由于所有 npm 安装和卸载中我的模块状态不佳...。我最终只是将 ng2-pagination 拿出来,现在一切都恢复正常了将尝试其他更兼容的分页模块或自定义组件
  • 0.3.5 的版本 ng2-pagination 对我来说没有问题。您可以尝试重新安装所有node_modules(只需删除整个node_modules 文件夹并再次执行npm install)。
  • 我尝试删除 node_modules 下的所有内容,然后运行 ​​npm install... 仍然是同样的问题:_angular_core.NgModule 不是函数。在我的 package.json 中: "ng2-pagination": "^0.3.5",
  • 实际上,我认为它不再是 ng2 分页了....我现在看到它现在将错误扔到另一个文件中(toolbar.umd.js)-----in我的 package.json 文件是依赖项:@angular2-material/toolbar": "^2.0.0-alpha.6"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 2017-02-12
相关资源
最近更新 更多