ember-cli,ember-simple-auth:无法重新注册:`store:main`

时间:2015-07-02 10:49:14

标签: ember.js ember-data ember-cli ember-simple-auth

目前我正在将我的项目从ember改为ember-cli并运行一个我无法摆脱的问题。我真的不确定问题出在哪里,因为我还更新了ember和ember-data。

我收到错误:

Uncaught Error: Cannot re-register: `store:main`, as it has already been resolved.

我正在尝试通过简单的身份验证会话加载用户。

import UserSession from '../session/user';

export default {
  name: 'user-session',
  before: 'simple-auth',
  after: 'store',
  initialize: function(container, application) {
    container.register('session:user', UserSession);
  }
};

和会话:

import Session from 'simple-auth/session';

export default Session.extend({
  setup: function(authenticator, content, trigger) {
    // Do not let setup trigger
    this._super.call(this, authenticator, content, false);
    // Lookup user and trigger events ourselves
    var store = this.container.lookup('store:main');
    console.log(store.find);

    var self = this;
    store.find('user', content.userId)
      .then(function(user) {
        self.set('user', user);
        self.trigger('sessionAuthenticationSucceeded');
      }, function() {
        console.log('ERROR: Could not resolve user of session!');
      });
  }
});

store.find在那里但是错误会破坏它。

我也厌倦了像这样注入商店: Ember-Simple-Auth currentUser example help required但结果相同。

此外,我尝试通过实例-initalizer为ember-data beta.19制作它。 我做这样的事情:

Session from '../session/user';

export default {
  name: 'user-session1',
  after: 'ember-data',
  initialize: function(container, application) {
      var store = container.lookup('store:main');
  }
};

但最终会:

Uncaught TypeError: container.lookup is not a function

使用:

 DEBUG: -------------------------------
ember.debug.js:4874DEBUG: Ember             : 1.12.1
ember.debug.js:4874DEBUG: Ember Data        : 1.0.0-beta.19.2
ember.debug.js:4874DEBUG: jQuery            : 1.11.3
ember.debug.js:4874DEBUG: Ember Simple Auth : 0.8.0
ember.debug.js:4874DEBUG: -------------------------------

帮助

------------------编辑---------------------------- ----------------

我根据@Artych评论更新了我的实例初始化程序,我得到了商店。 我从simple-auth中删除了自定义会话,并在重新打开时尝试了它

ENV['simple-auth'] = {
    //session: 'session:user', ...

我的功能:

initialize: function(application) {

    var store = application.container.lookup('store:main');

    Session.reopen({
      setCurrentUser: function() {
        console.log('never get here');
        var accessToken = this.get('access_token');
        var self = this;

        if (!Ember.isEmpty(accessToken)) {
          //never gets here, doesn't matter if I take other variables
        }
      }.observes('access_token', 'id', 'userId', 'user_id')
    });

  }

现在的问题是它永远不会进入“setCurrentUser”。我仍然可以注销并进入。我的autenticator:

authenticate: function(credentials) {
return new Ember.RSVP.Promise(function(resolve, reject) {
  var ttl = 30*60*1000;  // Request login for 30 minutes
  var data = _.extend(credentials, {ttl: ttl});
  Ember.$.ajax({
    type: 'POST',
    url: ENV.api + '/users/login',
    data: data,
    dataType: 'json'
  })
  .then(function(response) {
  console.log(response);
    Ember.run(null, resolve, response);
  }, function(xhr, status, error) {
    Ember.run(null, reject, error);
  });
});

},

返回:

Object {id: "xI3sPSsgdOiHLd8DcFyuOE42KhbuO8gi8BjWBJRrgHgeCESWoma99C2RtvC6tnxG", ttl: 1800000, created: "2015-07-02T14:00:06.600Z", userId: 1}

正如你所看到的,我添加了一堆观察到的变量:observes('access_token','id','userId','user_id'),我在其他不同的问题中看到了这些变量,但没有帮助。 有什么想法吗? THX

1 个答案:

答案 0 :(得分:0)

我解决了它。 简单的不要使用Ember Data 1.0.0-beta.19.2。我升级到1.13.4,我能像以前一样得到商店。