无法读取 Ember.DefaultResolver.extend.podBasedComponentsInSubdir 处未定义的 属性 'match'
Cannot read property 'match' of undefined at Ember.DefaultResolver.extend.podBasedComponentsInSubdir
我从控制台收到一条非常不透明的错误消息(不透明的意思是我没有自己的源代码的参考点),我不完全确定去哪里看,我觉得这可能是一个错误库代码,但在 github 上发布之前,我会仔细检查这不是我自己的错。
问题
问题很简单,我正在调用 this.store.find('player')
,希望获得所有玩家的列表,然后将它们显示在某种列表中,但我什至没有通过加载部分。数据是从服务器中提取的,看起来格式正确,但在 route.model
方法调用后似乎出现了问题。并且错误消息似乎在 ember.js
库代码中的某处,没有任何内容指向我自己的代码。
服务器响应
内容类型当然是application/json
,注意id
属性实际上是_id
.
[
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
错误信息
请注意,堆栈跟踪的一部分指向我的来源,只有 Ember
个来源。这使得调试变得很痛苦。
Error while processing route: leader Cannot read property 'match' of undefined TypeError: Cannot read property 'match' of undefined
at Ember.DefaultResolver.extend.podBasedComponentsInSubdir (http://localhost:4200/assets/vendor.js:60138:76)
at http://localhost:4200/assets/vendor.js:60190:34
at Array.exports.default.mixin.Mixin.create.find (http://localhost:4200/assets/vendor.js:39572:30)
at Ember.DefaultResolver.extend.findModuleName (http://localhost:4200/assets/vendor.js:60188:44)
at resolveOther (http://localhost:4200/assets/vendor.js:60051:37)
at superWrapper (http://localhost:4200/assets/vendor.js:28141:20)
at exports.default.EmberObject.default.extend.resolve (http://localhost:4200/assets/vendor.js:15454:35)
at Object.resolve [as resolver] (http://localhost:4200/assets/vendor.js:15217:23)
at resolve (http://localhost:4200/assets/vendor.js:12792:29)
at Object.Registry.resolve (http://localhost:4200/assets/vendor.js:12336:21)
来源
这个ember应用程序还很年轻,所以目前源码很少,但这是目前所有相关的源码。
路线
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
export default Router.map(function() {
this.resource('leader');
this.resource('profile');
this.route('loading');
});
领袖路线
Leader 有一个模板和一个控制器,但现在它们基本上是空的。
import Ember from 'ember';
export default Ember.Route.extend({
model: function () {
return Ember.RSVP.hash({
players: this.get('store').find('player')
});
},
});
球员模型
import DS from 'ember-data';
export default DS.Model.extend({
alias: DS.attr('string'),
createdAt: DS.attr('date'),
scans: DS.hasMany('scan'),
});
应用程序适配器
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
namespace: ''
});
应用程序序列化程序
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: function (type) {
return '_id';
},
serializeId: function(id) {
return id.toString();
}
});
版本
我不确定这里的版本是否特别重要
ember-cli
是 0.2.3
ember-data
是 1.0.0-beta.16.1
ember
是 1.11.1
我尝试过的事情
- 从模型中删除属性,如果关系似乎是问题所在(没有改变)
- 尝试为应用程序(包括在上面)设置序列化器和适配器,但没有任何改变。
- 响应中的
id
字段实际上是 _id
时的序列化程序。
- 尝试更新 ember 数据,没有任何改变。
好吧,我知道哪里出了问题...我忘了检查服务器返回的数据是否符合使用 ember 数据所需的 convention/protocol。服务器返回的 JSON
如下所示。
[
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
实际上应该是这样的
{
"players": [
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
}
所以是的,这是我的愚蠢和遗漏了一些东西。
为什么需要这个
Ember 数据期望从服务器返回 JSON 以满足 JSON API Standard, which is a standard that specifies the formatting of the JSON returned from a server. In this case, the data didn't meet the JSON API standard, as I forgot to put the array of players under a key called players
. There are some more examples of this in the Ember v1.10.0 guide to models.
原因 Ember Data 期望如此 Ember Data 可以对从服务器返回的数据做出某些假设。
我从控制台收到一条非常不透明的错误消息(不透明的意思是我没有自己的源代码的参考点),我不完全确定去哪里看,我觉得这可能是一个错误库代码,但在 github 上发布之前,我会仔细检查这不是我自己的错。
问题
问题很简单,我正在调用 this.store.find('player')
,希望获得所有玩家的列表,然后将它们显示在某种列表中,但我什至没有通过加载部分。数据是从服务器中提取的,看起来格式正确,但在 route.model
方法调用后似乎出现了问题。并且错误消息似乎在 ember.js
库代码中的某处,没有任何内容指向我自己的代码。
服务器响应
内容类型当然是application/json
,注意id
属性实际上是_id
.
[
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
错误信息
请注意,堆栈跟踪的一部分指向我的来源,只有 Ember
个来源。这使得调试变得很痛苦。
Error while processing route: leader Cannot read property 'match' of undefined TypeError: Cannot read property 'match' of undefined
at Ember.DefaultResolver.extend.podBasedComponentsInSubdir (http://localhost:4200/assets/vendor.js:60138:76)
at http://localhost:4200/assets/vendor.js:60190:34
at Array.exports.default.mixin.Mixin.create.find (http://localhost:4200/assets/vendor.js:39572:30)
at Ember.DefaultResolver.extend.findModuleName (http://localhost:4200/assets/vendor.js:60188:44)
at resolveOther (http://localhost:4200/assets/vendor.js:60051:37)
at superWrapper (http://localhost:4200/assets/vendor.js:28141:20)
at exports.default.EmberObject.default.extend.resolve (http://localhost:4200/assets/vendor.js:15454:35)
at Object.resolve [as resolver] (http://localhost:4200/assets/vendor.js:15217:23)
at resolve (http://localhost:4200/assets/vendor.js:12792:29)
at Object.Registry.resolve (http://localhost:4200/assets/vendor.js:12336:21)
来源
这个ember应用程序还很年轻,所以目前源码很少,但这是目前所有相关的源码。
路线
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
export default Router.map(function() {
this.resource('leader');
this.resource('profile');
this.route('loading');
});
领袖路线
Leader 有一个模板和一个控制器,但现在它们基本上是空的。
import Ember from 'ember';
export default Ember.Route.extend({
model: function () {
return Ember.RSVP.hash({
players: this.get('store').find('player')
});
},
});
球员模型
import DS from 'ember-data';
export default DS.Model.extend({
alias: DS.attr('string'),
createdAt: DS.attr('date'),
scans: DS.hasMany('scan'),
});
应用程序适配器
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
namespace: ''
});
应用程序序列化程序
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: function (type) {
return '_id';
},
serializeId: function(id) {
return id.toString();
}
});
版本
我不确定这里的版本是否特别重要
ember-cli
是 0.2.3ember-data
是 1.0.0-beta.16.1ember
是 1.11.1
我尝试过的事情
- 从模型中删除属性,如果关系似乎是问题所在(没有改变)
- 尝试为应用程序(包括在上面)设置序列化器和适配器,但没有任何改变。
- 响应中的
id
字段实际上是_id
时的序列化程序。
- 响应中的
- 尝试更新 ember 数据,没有任何改变。
好吧,我知道哪里出了问题...我忘了检查服务器返回的数据是否符合使用 ember 数据所需的 convention/protocol。服务器返回的 JSON
如下所示。
[
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
实际上应该是这样的
{
"players": [
{
"_id":"55405a5102b4ed623c225e87",
"alias":"mikeTest",
"__v":0,
"scans":[],
"createdAt":"2015-04-29T04:13:05.223Z"
}
]
}
所以是的,这是我的愚蠢和遗漏了一些东西。
为什么需要这个
Ember 数据期望从服务器返回 JSON 以满足 JSON API Standard, which is a standard that specifies the formatting of the JSON returned from a server. In this case, the data didn't meet the JSON API standard, as I forgot to put the array of players under a key called players
. There are some more examples of this in the Ember v1.10.0 guide to models.
原因 Ember Data 期望如此 Ember Data 可以对从服务器返回的数据做出某些假设。