ng g app-shell input.mergeMap不是一个函数

时间:2017-12-11 12:01:51

标签: angular angular-cli angular5

我正在尝试使用最新的角度cli来生成组件。我试图生成一个模块,但我也遇到了类似的错误。

graphlab.linear_regression.create

我收到了这个错误

ng g component testComponent

我的Package.json文件如下所示:

input.mergeMap is not a function
TypeError: input.mergeMap is not a function
    at Object.callRule (C:\Users\dammy\Documents\Visual Studio 2017\Projects\Cars\node_modules\@angular-devkit\schematics\src\rules\call.js:70:18)

我已安装:Angular/cli@1.6.0

6 个答案:

答案 0 :(得分:3)

It seems that if you have @angular/cli installed globally and a different 
version installed locally it gets broken. I solved the same error removing the 
cli package that was installed locally with 

npm remove @angular/cli --save 

then install your CLI->

npm install -g @angular/cli@latest 

答案 1 :(得分:3)

对我来说,我重新安装了angular-devkit。运行命令:

npm install @angular-devkit/schematics@0.0.34 --save-dev

它有效!

答案 2 :(得分:2)

升级到@angular/cli 1.6.0时遇到同样的问题,即使我有rxjs v5.5.5。我能够通过以下方式解决它:

npm i --save-dev @angular/cli@^1.6.0

npm i @angular/cli@^1.6.0 -g

npm i --save-dev typescript@^2.6.2

npm i typescript@^2.6.2 -g

就我而言,这很可能是因为我的全局打字稿与我的本地打字稿不同。我只是重新安装了所有内容以确保所有内容都处于同步状态[显然,你可以将这些命令中的一些组合起来,为了清晰起见,我就这样发布了它。)

更新:由于某种原因我有这个问题的回归,这次解决方案本身并没有自行解决。尝试上述操作后,我可以通过删除我的package-lock.json和本地node_modules文件夹并执行另一个npm install来解决此问题。

答案 3 :(得分:1)

@angular/cli版本的rxjs依赖性为v5.5.5

请参阅此依赖关系树:

yarn list rxjs
yarn list v0.27.5
├─ @angular-devkit/schematics@0.0.41
│  └─ rxjs@5.5.5
├─ @angular/cli@1.6.0
│  └─ rxjs@5.5.5
└─ rxjs@5.5.2
Done in 1.16s.

在我的情况下,版本是5.5.2并且升级修复了这个问题。

答案 4 :(得分:0)

有同样的问题;我通过删除node_modules暂时恢复到@ angular / cli的v1.5.0并再次运行yarn install

由于@ angular-devkit / schematics @ 0.0.41(需要rxjs@5.5.5)和@ angular / cli @ 1.6.0的依赖性不匹配,将@ angular / cli升级到版本1.6.0会引入此问题。

编辑:请注意,在package.json中将rxjs的版本设置为5.5.5不会升级@ angular-devkit / schematics @ 0.0.41或@ angular / cli的代码依赖项@ 1.6.0,如下面的摘录所示。

参考:[https://github.com/angular/angular-cli/issues/8782][1]

受影响的命令: ng generate XXX

似乎@ angular / cli和@ angular-devkit / schematics的依赖关系在将@ angular / cli升级到v1.6.0之后没有升级,特别是rxjs没有升级。

├─ @angular-devkit/schematics@0.0.41
│  ├─ @angular-devkit/core@0.0.22
│  ├─ @ngtools/json-schema@^1.1.0
│  ├─ @schematics/schematics@0.0.10
│  ├─ minimist@^1.2.0
│  ├─ rxjs@^5.5.2
│  ├─ rxjs@5.5.2
│  │  └─ symbol-observable@^1.0.1
│  └─ symbol-observable@1.0.4
├─ @angular/animations@5.0.2
│  └─ tslib@^1.7.1
├─ @angular/cli@1.6.0
│  ├─ @angular-devkit/build-optimizer@~0.0.35
│  ├─ @angular-devkit/schematics@~0.0.40
│  ├─ @ngtools/json-schema@1.1.0
│  ├─ @ngtools/webpack@1.9.0
│  ├─ @schematics/angular@~0.1.10
│  ├─ autoprefixer@^6.5.3
│  ├─ chalk@~2.2.0
│  ├─ chalk@2.2.2
│  │  ├─ ansi-styles@^3.1.0
│  │  ├─ escape-string-regexp@^1.0.5
│  │  └─ supports-color@^4.0.0
│  ├─ circular-dependency-plugin@^4.2.1
│  ├─ common-tags@^1.3.1
│  ├─ copy-webpack-plugin@^4.1.1
│  ├─ core-object@^3.1.0
│  ├─ css-loader@^0.28.1
│  ├─ cssnano@^3.10.0
│  ├─ denodeify@^1.2.1
│  ├─ ember-cli-string-utils@^1.0.0
│  ├─ exports-loader@^0.6.3
│  ├─ extract-text-webpack-plugin@^3.0.2
│  ├─ file-loader@^1.1.5
│  ├─ fs-extra@^4.0.0
│  ├─ glob@^7.0.3
│  ├─ html-webpack-plugin@^2.29.0
│  ├─ istanbul-instrumenter-loader@^2.0.0
│  ├─ karma-source-map-support@^1.2.0
│  ├─ less-loader@^4.0.5
│  ├─ less@^2.7.2
│  ├─ license-webpack-plugin@^1.0.0
│  ├─ lodash@^4.11.1
│  ├─ memory-fs@^0.4.1
│  ├─ minimatch@^3.0.4
│  ├─ node-modules-path@^1.0.0
│  ├─ node-sass@^4.3.0
│  ├─ nopt@^4.0.1
│  ├─ opn@~5.1.0
│  ├─ portfinder@~1.0.12
│  ├─ postcss-custom-properties@^6.1.0
│  ├─ postcss-loader@^2.0.8
│  ├─ postcss-url@^7.1.2
│  ├─ raw-loader@^0.5.1
│  ├─ resolve@^1.1.7
│  ├─ rxjs@^5.5.2
│  ├─ rxjs@5.5.2
│  │  └─ symbol-observable@^1.0.1

答案 5 :(得分:0)

升级到@ angular / cli 1.6.3和typescript 2.6.2后,我遇到了同样的问题。您必须检查@ angular / cli和Typescript的全局版本和本地版本是否相同。

您可以使用以下命令检查全局版本:

ng -v
tsc -v

然后将它与您当地的package.json进行比较。

如果他们不同:

<强>全球

npm remove -g @angular/cli
npm remove -g typescript

npm i -g @angular/cli@latest
npm i -g typescript@latest

<强>本地:

//Remove node_modules folder
//remove package-lock.json
npm i @angular/cli@latest --save-dev
npm i typescript@latest --save-dev
npm install

注意:在撰写本文时,我收到了来自angular cli的警告,告知

@angular/compiler-cli@5.2.0 requires typescript@'>=2.4.2 <2.6.0' but 2.6.2 was found instead.  

如果你想避免这种情况。你可以使用

npm i -g typescript@2.4.2
npm i typescript@2.4.2 --save-dev