ng g app-shell input.mergeMap не является функцией

Я пытаюсь использовать последнюю версию angular cli для создания компонента. Я попытался сгенерировать модуль и получил аналогичную ошибку.

ng g component testComponent

я получил эту ошибку

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)

мой файл Package.json выглядит так:

{
 ...
  },
  "dependencies": {
    ...
    "css-loader": "0.28.4",
    "es6-shim": "0.35.3",
    "event-source-polyfill": "0.0.9",
    "expose-loader": "0.7.3",
    "extract-text-webpack-plugin": "2.1.2",
    "file-loader": "0.11.2",
    "html-loader": "0.4.5",
    "isomorphic-fetch": "2.2.1",
    "jquery": "3.2.1",
    "json-loader": "0.5.4",
    "preboot": "4.5.2",
    "raw-loader": "0.5.1",
    "reflect-metadata": "0.1.10",
    "rxjs": "5.5.5",
    "style-loader": "0.18.2",
    "to-string-loader": "1.1.5",
    "typescript": "2.4.1",
    "url-loader": "0.5.9",
    "webpack": "2.5.1",
    "webpack-hot-middleware": "2.18.2",
    "webpack-merge": "4.1.0",
    "zone.js": "0.8.12"
  },

Я установил: Angular/[email protected]


person NetEmmanuel    schedule 11.12.2017    source источник
comment
Я тоже сталкиваюсь с той же проблемой. Я использую 1.6.0   -  person anbiniyar    schedule 11.12.2017
comment
Я изменил rxjs: 5.5.2 на rxjs: ^ 5.5.2 в моем файле package.json, и это, похоже, решило проблему. Я копался в файле call.js и обнаружил, что они полагаются на mergeMap, который является частью «rxjs». Пожалуйста, попробуйте и дайте мне знать, если это сработало для вас   -  person anbiniyar    schedule 11.12.2017
comment
У меня установлен rxjs 5.5.5, и я все еще получаю эту ошибку.   -  person MapLion    schedule 11.12.2017
comment
@MapLion обновлен, также по-прежнему возникает та же ошибка   -  person NetEmmanuel    schedule 12.12.2017
comment
@NetEmmanuel Я смог решить эту проблему с помощью ответа, который я дал ниже; убедитесь, что ваши глобальные и локальные машинописные тексты и cli синхронизированы с точки зрения версии, и убедитесь, что ваш rxjs 5.5.5; это может помочь сначала удалить все и начать заново.   -  person MapLion    schedule 12.12.2017
comment
Попробуйте это, у меня сработало npm remove @angular/cli --save. Это удалит локальную установку angular cli. Мой rxjs был 5.4.2, и я заменил его на rxjs: ^ 5.4.2. Удалите папку node_modules внутри проекта и снова запустите npm install. Надеюсь, это поможет кому-то.   -  person wajira000    schedule 19.12.2017


Ответы (6)


Для себя я переустановил angular-devkit. Запустите команду:

npm install @angular-devkit/[email protected] --save-dev

И это сработало!

person Lee    schedule 27.12.2017
comment
Эти версии хорошо работают вместе: @angular/compiler-cli: 4.4.6 и @angular-devkit/schematics: 0.0.39. - person Pax Beach; 08.01.2018

У меня была такая же проблема при обновлении до @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.

person MapLion    schedule 11.12.2017
comment
В этом треде есть множество решений для людей, но предложение @MapLion кажется соответствовать тому, что сработало больше всего. - person rawkfist0215; 12.12.2017

Похоже, что эта версия @angular/cli имеет зависимость rxjs от версии 5.5.5.

См. это дерево зависимостей:

yarn list rxjs
yarn list v0.27.5
├─ @angular-devkit/[email protected]
│  └─ [email protected]
├─ @angular/[email protected]
│  └─ [email protected]
└─ [email protected]
Done in 1.16s.

В моем случае версия была 5.5.2, и обновление решило эту проблему.

person rawkfist0215    schedule 11.12.2017
comment
обновление rxjs до 5.5.5 не исправляет это для меня - person NetEmmanuel; 12.12.2017

Была такая же проблема; Я временно вернулся к версии 1.5.0 @angular/cli, удалив node_modules и снова запустив yarn install.

Обновление @angular/cli до версии 1.6.0 приводит к этой проблеме из-за несоответствия зависимостей для @angular-devkit/[email protected] (требуется [email protected]) и @angular/[email protected].

Изменить: обратите внимание, что установка версии rxjs на 5.5.5 в вашем package.json не обновляет зависимости кода для @angular-devkit/[email protected] или @angular/[email protected]. 0, как показано в выдержке ниже.

Ссылка: [https://github.com/angular/angular-cli/issues/8782][1]

Затронутые команды: ng generate XXX

Похоже, что зависимости для @angular/cli и @angular-devkit/schematics не обновляются после обновления @angular/cli до версии 1.6.0, и особенно rxjs не обновляется.

├─ @angular-devkit/[email protected]
│  ├─ @angular-devkit/[email protected]
│  ├─ @ngtools/json-schema@^1.1.0
│  ├─ @schematics/[email protected]
│  ├─ minimist@^1.2.0
│  ├─ rxjs@^5.5.2
│  ├─ [email protected]
│  │  └─ symbol-observable@^1.0.1
│  └─ [email protected]
├─ @angular/[email protected]
│  └─ tslib@^1.7.1
├─ @angular/[email protected]
│  ├─ @angular-devkit/build-optimizer@~0.0.35
│  ├─ @angular-devkit/schematics@~0.0.40
│  ├─ @ngtools/[email protected]
│  ├─ @ngtools/[email protected]
│  ├─ @schematics/angular@~0.1.10
│  ├─ autoprefixer@^6.5.3
│  ├─ chalk@~2.2.0
│  ├─ [email protected]
│  │  ├─ 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
│  ├─ [email protected]
│  │  └─ symbol-observable@^1.0.1
person Amos Wachanga    schedule 11.12.2017

У меня была такая же проблема после обновления до @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/[email protected] requires typescript@'>=2.4.2 <2.6.0' but 2.6.2 was found instead.  

Если вы хотите избежать этого. Вы можете использовать

npm i -g [email protected]
npm i [email protected] --save-dev
person Javier Rojano    schedule 11.01.2018

person    schedule
comment
Это решило проблему для меня. Ваше здоровье - person NetEmmanuel; 10.01.2018