ember-cli,ember-simple-auth:无法重新注册:`store:main`
ember-cli, ember-simple-auth: Cannot re-register: `store:main`
目前我正在将我的项目从 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 但结果相同。
此外,我尝试通过 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"。我仍然可以注销和登录。我的验证器:
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);
});
});
},
returns:
Object {id: "xI3sPSsgdOiHLd8DcFyuOE42KhbuO8gi8BjWBJRrgHgeCESWoma99C2RtvC6tnxG", ttl: 1800000, created: "2015-07-02T14:00:06.600Z", userId: 1}
如你所见,我添加了一堆观察变量:observes('access_token', 'id', 'userId', 'user_id') 我在不同的其他地方看到问题,但没有任何帮助。
对此有什么想法吗?
感谢
我解决了。
简单的不要使用 Ember Data 1.0.0-beta.19.2。我升级到 1.13.4,我可以像以前一样获得商店。
目前我正在将我的项目从 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 但结果相同。
此外,我尝试通过 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"。我仍然可以注销和登录。我的验证器:
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);
});
});
},
returns:
Object {id: "xI3sPSsgdOiHLd8DcFyuOE42KhbuO8gi8BjWBJRrgHgeCESWoma99C2RtvC6tnxG", ttl: 1800000, created: "2015-07-02T14:00:06.600Z", userId: 1}
如你所见,我添加了一堆观察变量:observes('access_token', 'id', 'userId', 'user_id') 我在不同的其他地方看到问题,但没有任何帮助。 对此有什么想法吗? 感谢
我解决了。 简单的不要使用 Ember Data 1.0.0-beta.19.2。我升级到 1.13.4,我可以像以前一样获得商店。