ember.js - 无法读取 Ember.DefaultResolver.extend.podBasedComponentsInSubdir 未定义的属性 'match'

标签 ember.js ember-data ember-cli

我从控制台收到一条非常不透明的错误消息(在我自己的源代码没有引用点的意义上是不透明的),我不完全确定在哪里看,我觉得这可能是库代码中的错误,但在发布之前这个在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 有一个模板和一个 Controller ,但它们现在基本上是空的。
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 数据所需的约定/协议(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 ,这是一个标准,用于指定从服务器返回的 JSON 的格式。在这种情况下,数据不符合 JSON API 标准,因为我忘记将玩家数组放在一个名为 players 的键下. Ember v1.10.0 guide to models 中有更多这样的例子。 .

    Ember Data 之所以期望这是因为 Ember Data 可以对从服务器返回的数据做出某些假设。

    关于ember.js - 无法读取 Ember.DefaultResolver.extend.podBasedComponentsInSubdir 未定义的属性 'match',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29936633/

    相关文章:

    javascript - 无法使用ember在浏览器中读取pdf内容

    javascript - 无法读取未定义的属性发送

    ember.js - 更改路线时重新渲染模板

    javascript - 从 IIS 提供 ember 应用程序导致 UnrecognizedURLError

    ember.js - Ember : How pass parameters to controller computed property

    javascript - Ember.Select View 在更改内容数组后未更新

    javascript - 将 ember-js 升级到 1.12.0 并将 ember-cli 升级到 0 0.2.5 时的缺陷

    ember.js - Ember 数据和脏记录

    ember.js - Ember 数据 1.0.0 Beta : RESTAdapter endpoint customization no longer works

    css - 我如何让 Broccoli 编译器注释 CSS 来自哪个文件?