Ember.js project - TypeError: session is undefined
Ember.js project - TypeError: session is undefined
我正在尝试 运行 一个 Ember 项目,我不得不升级它的包,但现在我 运行 遇到了弃用问题。
我目前的问题是,当我在 firefox 中打开开发人员控制台时,当我按下 'login' 时,我看到一条 TypeError: session is undefined
消息。
我真的不了解 Ember,所以据我所知,有一个构建 javascript 文件是基于 javascript 小文件的 MCR 架构。
所以这是最重要的部分:
define('genesis/controllers/login', ['exports', 'ember'], function (exports, _ember) {
exports['default'] = _ember['default'].Controller.extend({
loginMessage: "",
actions: {
authenticate: function authenticate() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'simple-auth-authenticator:jwt';
this.set("loginMessage", "");
var session = this.get('session');
session.authenticate(authenticator, credentials);
}
}
});
});
这是它基于的小版本:
templates/login.js
import Ember from 'ember';
export default Ember.Controller.extend({
loginMessage: "",
actions: {
authenticate: function() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'simple-auth-authenticator:jwt';
this.set("loginMessage", "");
var session = this.get('session');
session.authenticate(authenticator, credentials);
}
}
});
由于弃用,我不得不将 Ember.ObjectController.extend
更改为 Ember.Controller.extend
。
假设session
是一个服务,你需要将它注入控制器才能使用它。如果不注入,this.get('session')
将 return 未定义。
检查 this documentation 有关依赖项注入的更多详细信息。
原来在升级过程中我从 package.json 中删除了一个名为
ember-simple-auth-token
,但由于 Charizard 的回答,我要感谢他让我找到它。
我还必须对模板文件进行一些微小的更改。
templates/login.js:
import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service(),
loginMessage: "",
actions: {
authenticate: function() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'authenticator:jwt';
this.set("loginMessage", "");
this.get('session').authenticate(authenticator, credentials);
}
}
});
我正在尝试 运行 一个 Ember 项目,我不得不升级它的包,但现在我 运行 遇到了弃用问题。
我目前的问题是,当我在 firefox 中打开开发人员控制台时,当我按下 'login' 时,我看到一条 TypeError: session is undefined
消息。
我真的不了解 Ember,所以据我所知,有一个构建 javascript 文件是基于 javascript 小文件的 MCR 架构。
所以这是最重要的部分:
define('genesis/controllers/login', ['exports', 'ember'], function (exports, _ember) {
exports['default'] = _ember['default'].Controller.extend({
loginMessage: "",
actions: {
authenticate: function authenticate() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'simple-auth-authenticator:jwt';
this.set("loginMessage", "");
var session = this.get('session');
session.authenticate(authenticator, credentials);
}
}
});
});
这是它基于的小版本:
templates/login.js
import Ember from 'ember';
export default Ember.Controller.extend({
loginMessage: "",
actions: {
authenticate: function() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'simple-auth-authenticator:jwt';
this.set("loginMessage", "");
var session = this.get('session');
session.authenticate(authenticator, credentials);
}
}
});
由于弃用,我不得不将 Ember.ObjectController.extend
更改为 Ember.Controller.extend
。
假设session
是一个服务,你需要将它注入控制器才能使用它。如果不注入,this.get('session')
将 return 未定义。
检查 this documentation 有关依赖项注入的更多详细信息。
原来在升级过程中我从 package.json 中删除了一个名为
ember-simple-auth-token
,但由于 Charizard 的回答,我要感谢他让我找到它。
我还必须对模板文件进行一些微小的更改。
templates/login.js:
import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service(),
loginMessage: "",
actions: {
authenticate: function() {
var credentials = this.getProperties('identification', 'password'),
authenticator = 'authenticator:jwt';
this.set("loginMessage", "");
this.get('session').authenticate(authenticator, credentials);
}
}
});