Как решить Не удается найти модуль «angularfire2» при использовании Angular-CLI и RC.4 с AngularFire 2 и Firebase 3

Я использую angular-cli с последней версией Angular RC4.

Я следовал инструкциям здесь.

Но мне пришлось внести несколько очень небольших изменений. Во-первых, я устанавливаю AngularFire следующим образом: npm install git+https://github.com/angular/angularfire2.git --save чтобы у меня была версия, совместимая с RC4.

Во-вторых, когда я выполняю шаг ввода, я делаю это: typings install file:node_modules/firebase/firebase.d.ts --save --global && typings install потому что теперь кажется, что там находится файл firebase.d.ts.

Далее делаю так:

var map = {
    'firebase': 'vendor/firebase/firebase.js',
    'angularfire2': 'vendor/angularfire2'
};

/** User packages configuration. */

var packages = {
    angularfire2: {
        defaultExtension: 'ts',
        main: 'angularfire2.ts'
    }
};

Где я использую файл .ts, потому что в папке node_modules/angularfire2 нет файла .js для angularfire2. Даже в исходной папке это просто файлы .ts.

Итак, как только я доберусь до шага 7, и сделаю это:

import { FIREBASE_PROVIDERS, defaultFirebase } from 'angularfire2';

все разваливается. Я не уверен, почему, это должно работать?

вот проект на github

ОБНОВИТЬ:

Итак, я попытался изменить расширение с .ts на .js в system-config.ts.

Затем я попробовал следующее:

➜ Projects rm -rf angular-analytics 
➜ Projects npm uninstall -g angular-cli
➜ Projects npm cache clean
➜ Projects npm install -g angular-cli@latest
➜ Projects git clone [email protected]:thehashrocket/angular-analytics.git
➜ Projects cd angular-analytics 
➜ angular-analytics git:(master) npm install
➜ angular-analytics git:(master) ng build

Однако результат был таким (опять же):

Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
Build failed.
The Broccoli Plugin: [BroccoliTypeScriptCompiler] failed with:
Error: Typescript found the following errors:
  /Users/jasonshultz/Projects/angular-analytics/tmp/broccoli_type_script_compiler-input_base_path-89eNuVcv.tmp/0/src/main.ts (4, 53): Cannot find module 'angularfire2'.
    at BroccoliTypeScriptCompiler._doIncrementalBuild (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:120:19)
    at BroccoliTypeScriptCompiler.build (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:43:10)
    at /Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/broccoli-caching-writer/index.js:152:21
    at lib$rsvp$$internal$$tryCatch (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1036:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1048:17)
    at lib$rsvp$$internal$$publish (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1019:11)
    at lib$rsvp$asap$$flush (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1198:9)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

The broccoli plugin was instantiated at: 
    at BroccoliTypeScriptCompiler.Plugin (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/broccoli-plugin/index.js:10:31)
    at BroccoliTypeScriptCompiler.CachingWriter [as constructor] (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/broccoli-caching-writer/index.js:21:10)
    at BroccoliTypeScriptCompiler (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/broccoli-typescript.js:26:49)
    at Angular2App._getTsTree (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/angular2-app.js:331:18)
    at Angular2App._buildTree (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/angular2-app.js:124:23)
    at new Angular2App (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/lib/broccoli/angular2-app.js:53:23)
    at module.exports (/Users/jasonshultz/Projects/angular-analytics/angular-cli-build.js:10:10)
    at Class.module.exports.Task.extend.setupBroccoliBuilder (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:55:19)
    at Class.module.exports.Task.extend.init (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:89:10)
    at new Class (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/core-object/core-object.js:18:12)
    at Class.module.exports.Task.extend.run (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/angular-cli/lib/tasks/build.js:15:19)
    at /Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/angular-cli/lib/commands/build.js:32:24
    at lib$rsvp$$internal$$tryCatch (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1036:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1048:17)
    at /Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:331:11
    at lib$rsvp$asap$$flush (/Users/jasonshultz/Projects/angular-analytics/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1198:9)

Я просто очень тупой и пропустил шаг? Я чувствую, что я. . . Это будет что-то очевидное, о чем я либо не знал, либо совершенно не замечал. :(


person Jason Shultz    schedule 31.07.2016    source источник
comment
Какая версия angular-cli? Бета.10? Или мастер? Вам не нужно использовать AngularFire2 от мастера, чтобы он работал с RC.4. Вы можете игнорировать предупреждения npm. Если npm не позволит вам продолжить, обновите до npm 3.10.5.   -  person Splaktar    schedule 31.07.2016
comment
Какая версия типизаций установлена ​​глобально и локально? Попробуйте стереть каталоги typings, tmp, dist и node_modules после установки typings 1.3.x локально и глобально.   -  person Splaktar    schedule 31.07.2016
comment
@Splaktar я использую следующее: angular-cli: 1.0.0-beta.10 node: 5.10.1 os: darwin x64 npm: 3.10.5 typings: 1.3.2   -  person Jason Shultz    schedule 01.08.2016
comment
ваша ссылка репо для меня 404.   -  person Splaktar    schedule 02.08.2016
comment
Можете ли вы попробовать использовать angularfire2: 2.0.0-beta.2? Он отлично работает с Angular 2 RC.4.   -  person Splaktar    schedule 02.08.2016


Ответы (2)


Ваши типы должны выглядеть так для firebase:

"dependencies": {
  "es6-promise": "github:typed-typings/npm-es6-promise#fb04188767acfec1defd054fc8024fafa5cd4de7",
  "firebase": "github:typed-typings/npm-firebase"
},

Ваш package.json должен иметь это для AngularFire2. Он отлично работает с Angular 2 RC.4:

"angularfire2": "2.0.0-beta.2",

Использование npm install -g npm должно дать вам версию npm 3.10.5, которая не выйдет из строя из-за того, что одноранговые зависимости не являются Angular 2 RC.2.

Похоже, ваше репо является частным, поскольку ссылка имеет код 404. Поэтому я не могу проверить это или увидеть точную проблему, с которой вы столкнулись, но, надеюсь, это поможет.

person Splaktar    schedule 01.08.2016

  1. Удалите папки firebase и angularefire2 из node_modules
  2. В Package.json измените зависимости angularfire2 и firebase, чтобы они выглядели следующим образом:

    Package.json

  3. установка нпм

  4. нг служить

Более простым решением является изменение оператора импорта для импорта устаревшего модуля, поэтому вместо:

импортировать {AngularFireDatabase} из 'angularfire2/database';

Использовать это:

импортировать {AngularFireDatabase} из 'angularfire2/database-deprecated';

Это устранит ошибку подписки, не изменяя package.json и не удаляя ничего.

person John    schedule 28.08.2018