Search code examples
meteoraccounts

Cannot remove email using Accounts Package in Meteor


When trying to use one of the basic Accounts methods listed below on the server-side, I always get an error of the following type:

TypeError: Object # has no method 'removeEmail'

Server Methods:

  • Accounts.addEmail()
  • Accounts.removeEmail()
  • Accounts.findUserByUsername()
  • Accounts.findUserByEmail()

I have tried from inside the app and from the REPL shell.

Accounts-related packages I use:

  • meteor-platform
  • accounts-password
  • accounts-facebook
  • pauli:accounts-linkedin
  • accounts-twitter
  • splendido:accounts-emails-field
  • accounts-base
  • alanning:roles

Solution

  • You are probably running a Meteor version prior to Meteor 1.2. I think all of the functions you mention were added in 1.2. To check your meteor version, run:

    meteor --version
    

    If that isn't the problem, please provide the exact code that is causing the error you mentioned.

    FYI, the following shows that those methods exist in my Meteor 1.2 installation with the packages you mentioned:

    [brettle@localhost test-app]$ meteor --version
    Meteor 1.2.0.2
    [brettle@localhost tmp]$ meteor create test-app
    Created a new Meteor app in 'test-app'.       
    
    To run your new app:                          
      cd test-app                                 
      meteor                                      
    
    If you are new to Meteor, try some of the learning resources here:
      https://www.meteor.com/learn                
    
    [brettle@localhost tmp]$ cd test-app
    
    #### Note "meteor add accounts-password" also works instead of this next line: 
    
    [brettle@localhost test-app]$ meteor add accounts-password accounts-facebook pauli:accounts-linkedin accounts-twitter splendido:accounts-emails-field accounts-base alanning:roles
    
    Changes to your project's package version selections:
    
    accounts-base                    added, version 1.2.1
    accounts-facebook                added, version 1.0.6
    accounts-oauth                   added, version 1.1.7
    accounts-password                added, version 1.1.3
    accounts-twitter                 added, version 1.0.6
    alanning:roles                   added, version 1.2.14
    ddp-rate-limiter                 added, version 1.0.0
    email                            added, version 1.0.7
    facebook                         added, version 1.2.2
    localstorage                     added, version 1.0.5
    npm-bcrypt                       added, version 0.7.8_2
    oauth                            added, version 1.1.6
    oauth1                           added, version 1.1.5
    oauth2                           added, version 1.1.5
    pauli:accounts-linkedin          added, version 1.1.2
    pauli:linkedin                   added, version 1.1.2
    rate-limit                       added, version 1.0.0
    service-configuration            added, version 1.0.5
    sha                              added, version 1.0.4
    splendido:accounts-emails-field  added, version 1.2.0
    srp                              added, version 1.0.4
    twitter                          added, version 1.1.5
    
    
    accounts-password: Password support for accounts
    accounts-facebook: Login service for Facebook accounts
    pauli:accounts-linkedin: Accounts service for LinkedIn accounts
    accounts-twitter: Login service for Twitter accounts
    splendido:accounts-emails-field: Adds to the user obj a `registered_emails`
    field containing 3rd-party account service emails.
    accounts-base: A user account system          
    alanning:roles: Authorization package for Meteor
    [brettle@localhost test-app]$ meteor &        
    [1] 21185
    [[[[[ ~/tmp/test-app ]]]]]                    
    
    => Started proxy.                             
    => Started MongoDB.                           
    => Started your app.                          
    
    => App running at: http://localhost:3000/
    I20151007-23:49:34.554(-7)? ** You've set up some data subscriptions with Meteor.publish(), but
    I20151007-23:49:34.555(-7)? ** you still have autopublish turned on. Because autopublish is still
    I20151007-23:49:34.555(-7)? ** on, your Meteor.publish() calls won't have much effect. All data
    I20151007-23:49:34.555(-7)? ** will still be sent to all clients.
    I20151007-23:49:34.555(-7)? **
    I20151007-23:49:34.556(-7)? ** Turn off autopublish by removing the autopublish package:
    I20151007-23:49:34.556(-7)? **
    I20151007-23:49:34.556(-7)? **   $ meteor remove autopublish
    I20151007-23:49:34.556(-7)? **
    I20151007-23:49:34.556(-7)? ** .. and make sure you have Meteor.publish() and Meteor.subscribe() calls
    I20151007-23:49:34.556(-7)? ** for each collection that you want clients to see.
    I20151007-23:49:34.556(-7)? 
    
    [brettle@localhost test-app]$ meteor shell
    
    Welcome to the server-side interactive shell!
    
    Tab completion is enabled for global variables.
    
    Type .reload to restart the server and the shell.
    Type .exit to disconnect from the server and leave the shell.
    Type .help for additional help.
    
    > Accounts.removeEmail
    [Function]
    > Accounts.addEmail
    [Function]
    > Accounts.findUserByUsername
    [Function]
    > Accounts.findUserByEmail
    [Function]