目前我正在将我的项目从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
答案 0 :(得分:0)
我解决了它。 简单的不要使用Ember Data 1.0.0-beta.19.2。我升级到1.13.4,我能像以前一样得到商店。