Angularfire: Duplicate Identifier Errors

Created on 1 Dec 2016  路  11Comments  路  Source: angular/angularfire

Version info

Angular:
angular-cli: 1.0.0-beta.20-4
node: 6.7.0
os: darwin x64
angular library: 2.1.0

Firebase:
3.6.2

AngularFire:
2.0.0-beta.6
Other (e.g. Ionic/Cordova, Node, browser, operating system):

How to reproduce these conditions

run this project, (npm i and ng serve):
https://github.com/JimTheMan/Jims-Ngrx-Example

Failing test unit, Plunkr, or JSFiddle demonstrating the problem

Steps to set up and reproduce
Errors appear in console every time I run ng serve

Sample data and security rules

<-- include/attach/link to some json sample data (or provide credentials to a sanitized, test Firebase project) -->

Debug output

* NG Live Development Server is running on http://localhost:4200. *
14188ms building modules 5ms add03710ms 372ms asse101ms emittinggHash: 5c5a5b6ec8a2600c7776
Version: webpack 2.1.0-beta.25
Time: 19610ms
Asset Size Chunks Chunk Names
main.bundle.js 3.74 MB 0, 2 [emitted] main
styles.bundle.js 10.3 kB 1, 2 [emitted] styles
inline.bundle.js 5.53 kB 2 [emitted] inline
main.map 4.09 MB 0, 2 [emitted] main
styles.map 14.2 kB 1, 2 [emitted] styles
inline.map 5.6 kB 2 [emitted] inline
index.html 484 bytes [emitted]
Child html-webpack-plugin for "index.html":
Asset Size Chunks Chunk Names
index.html 2.81 kB 0
webpack: bundle is now VALID.
[default] Checking started in a separate process...
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:12:9
Duplicate identifier 'Promise'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:17:9
Duplicate identifier 'Promise_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:130:9
Duplicate identifier 'EmailAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:135:9
Duplicate identifier 'EmailAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:144:9
Duplicate identifier 'FacebookAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:148:9
Duplicate identifier 'FacebookAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:153:9
Duplicate identifier 'GithubAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:157:9
Duplicate identifier 'GithubAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:162:9
Duplicate identifier 'GoogleAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:167:9
Duplicate identifier 'GoogleAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:172:9
Duplicate identifier 'TwitterAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:177:9
Duplicate identifier 'TwitterAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:181:8
Duplicate identifier 'UserCredential'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:339:8
Duplicate identifier 'StringFormat'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:340:7
Duplicate identifier 'StringFormat'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:347:8
Duplicate identifier 'TaskEvent'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:348:7
Duplicate identifier 'TaskEvent'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:352:8
Duplicate identifier 'TaskState'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:353:7
Duplicate identifier 'TaskState'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase/firebase.d.ts:390:3
Duplicate identifier 'export='.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:12:9
Duplicate identifier 'Promise'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:17:9
Duplicate identifier 'Promise_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:132:9
Duplicate identifier 'EmailAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:137:9
Duplicate identifier 'EmailAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:146:9
Duplicate identifier 'FacebookAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:150:9
Duplicate identifier 'FacebookAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:156:9
Duplicate identifier 'GithubAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:160:9
Duplicate identifier 'GithubAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:166:9
Duplicate identifier 'GoogleAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:171:9
Duplicate identifier 'GoogleAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:177:9
Duplicate identifier 'TwitterAuthProvider'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:182:9
Duplicate identifier 'TwitterAuthProvider_Instance'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:187:8
Duplicate identifier 'UserCredential'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:358:8
Duplicate identifier 'StringFormat'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:359:7
Duplicate identifier 'StringFormat'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:366:8
Duplicate identifier 'TaskEvent'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:367:7
Duplicate identifier 'TaskEvent'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:371:8
Duplicate identifier 'TaskState'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:372:7
Duplicate identifier 'TaskState'.
[default] /Users/jim/git2/Jims-Ngrx-Example/jims-ngrx-eg/node_modules/firebase/firebase.d.ts:409:3
Duplicate identifier 'export='.
[default] Checking finished with 40 errors

* Errors in the JavaScript console *

* Output from firebase.database().enableLogging(true); *

* Screenshots *

Expected behavior

clean run of ng serve with no errors.

Actual behavior

All 11 comments

You have two firebase modules installed:

  • .../jims-ngrx-eg/node_modules/angularfire2/node_modules/firebase
  • .../jims-ngrx-eg/node_modules/firebase

Delete the first one so that AngularFire2 uses the firebase module that you have specified in your package.json as a peer (see #681).

Why is node_modules/angularfire2/node_modules being installed?

Another solution is to install firebase 3.3.0, the version of angularfire.

@zakdances It's installed there because AngularFire2 has it as a dependency, rather than a peer dependency. It really should be the latter. You've specified a different version of Firebase, so you end up with two installations in the node_modules hierarchy, etc.

This wouldn't be a problem if the versions were the same. My understanding is that AngularFire2 is not using the latest version of Firebase, as there are problems with SystemJS (but I could have that wrong).

Hi. Thanks for answering guys. I'll try this. The thing is that I had firebase 3.X installed already because I was doing most of my calls with that, but then i wanted to move to ngrx/store and wanted the observables from AngularFire2. I suspect other people will come across this as well. I'm sure there is some solution where we don't have to delete a node_modules folder. :)

Hi All,

There shouldn't be a node_modules folder inside of angularfire2. Firebase is set as a dependency inside of the angularfire2 package.json and should be installed at your root node_modules folder.

With that said...

If you go into the firebase directory in your node_modules folder you will see an app.d.ts and a firebase.d.ts. Both of these files contain the same definitions which cause the duplicate error. Delete firebase.d.ts and all the errors will resolve.

This worked for me. Hopefully this will help someone else.

Many People have a Problem with this can you please fix it?

thanks @thegrid22593 delete the firebase.d.ts fixed my problem.

Thanks,
Daniel

This should be fixed with #681. The fix is published under the next tag (npm i angularfire2@next). After a few more issues are addressed we'll do a release.

Correct me if I'm wrong, but despite the PR title, #681 doesn't actually set it as a peer dependency, it just updates the version tag, but keeps firebase listed inside the dependencies section.

This results in firebase still being installed inside the angularfire2 node_modules directory.

@rosslavery The package is re-written in during a release to set dependencies to peerDependencies, the issue is that they are still being left as dependencies. I've made the change to delete them as dependencies on a release.

I ran into this issue because i ran firebase init when I already had angularfire2 included in my app. I solved the issue by deleting node modules, then re-installing.

Was this page helpful?
0 / 5 - 0 ratings