【发布时间】:2015-02-12 12:25:51
【问题描述】:
TL;DR - Ember Data 在运行 Ember.js v1.9.0 的基本 Ember CLI 应用程序中不起作用
我对 Ember 和 Ember CLI 不太熟悉/不是很新,我刚刚创建了一个新项目来试用 Ember.js 的 1.9.0 版本,这是一个链接:http://emberjs.com/blog/2014/12/08/ember-1-9-0-released.html
我在我的应用程序中处于某个点(我承认不是很深),我正在设置 FIXTURES 来测试一些数据,但后来发生了这种情况:
控制台
Error while processing route: dashboard.index Cannot read property 'find' of undefined TypeError: Cannot read property 'find' of undefined
at __exports__.default.Ember.Route.extend.model (focus-haven/routes/dashboard.js:9:24)
at EmberObject.extend.deserialize (http://0.0.0.0:4200/assets/vendor.js:38356:21)
at applyHook (http://0.0.0.0:4200/assets/vendor.js:61082:30)
at Object.HandlerInfo.runSharedModelHook (http://0.0.0.0:4200/assets/vendor.js:59103:22)
at Object.subclass.getModel (http://0.0.0.0:4200/assets/vendor.js:59329:21)
at http://0.0.0.0:4200/assets/vendor.js:60956:19
at tryCatch (http://0.0.0.0:4200/assets/vendor.js:61405:16)
at invokeCallback (http://0.0.0.0:4200/assets/vendor.js:61417:17)
at publish (http://0.0.0.0:4200/assets/vendor.js:61388:11)
at http://0.0.0.0:4200/assets/vendor.js:42960:9
在做了一些调查和运行 ember 测试之后,我得到了这个:
not ok 14 PhantomJS 1.9 - ApplicationAdapter: it exists
---
actual: >
null
message: >
Setup failed on it exists: Can't find variable: DS
Log: >
...
not ok 15 PhantomJS 1.9 - Dashboard: it exists
---
actual: >
null
message: >
Setup failed on it exists: Can't find variable: DS
Log: >
...
not ok 16 PhantomJS 1.9 - Task: it exists
---
actual: >
null
message: >
Setup failed on it exists: Can't find variable: DS
Log: >
...
...我在控制台中找到了这个:
DEBUG: -------------------------------
DEBUG: Ember : 1.9.0
DEBUG: Handlebars : 2.0.0
DEBUG: jQuery : 1.11.1
DEBUG: -------------------------------
我可能错了,但我认为 Ember 数据没有被加载或导入或其他什么,所以我花了大部分时间试图解决这个问题,但没有骰子。
我尝试过的事情:
- 按照本指南:http://www.cubicleapps.com/articles/todo-mvc-with-ember-cli-part-2
- 同时阅读 ember cli 和 ember.js api 文档/指南
- 通过 bower 重新安装 ember-data:bower install ember-data
- 尝试对 StackOverflow 上的类似问题实施解决方案,但无济于事
- 删除项目并运行 ember 新项目(我做了 3 次)
- 注意:在上一个项目中,控制台给了我不同的错误,但我解决了这些问题。应用程序开始按预期运行,但在我退出并再次运行 ember serve 后,此问题开头所述的控制台错误再次出现,现在我回到原点。便便。
解决方案可能很明显,但在大量运行更多测试和搜索网络之后,我什至无法找到解决方案。所以,是的,我有点累了,希望有一双新的眼睛能发现确凿的证据。
相关文件包括:
适配器/application.js
import DS from 'ember-data';
export default DS.FixtureAdapter.extend({});
models/task.js
import DS from 'ember-data';
var Task = DS.Model.extend({
group: DS.attr('string'),
kind: DS.attr('string'),
body: DS.attr('string'),
isCompleted: DS.attr('boolean')
});
Task.reopenClass({
FIXTURES: [
{
id: 1,
group: 'test',
kind: 'project',
body: 'whatever',
isCompleted: false
},
{
id: 2,
group: 'test',
kind: 'homwork',
body: 'lol what nope',
isCompleted: false
}
]
});
export default DS.Store.extend({
adapter: 'DS.FixtureAdapter'
});
export default Task;
routes/dashboard.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('task');
}
});
dashboard.hbs
{{#each task in model}}
<p>{{task.group}}</p>
<p>{{task.kind}}</p>
<p>{{task.body}}</p>
<p>{{task.isCompleted}}</p>
{{/each}}
bower.json
{
"name": "focus-haven",
"dependencies": {
"handlebars": "2.0.0",
"jquery": "^1.11.1",
"ember": "1.9.0",
"ember-data": "~1.0.0-beta.12",
"ember-resolver": "~0.1.10",
"loader.js": "stefanpenner/loader.js#1.0.1",
"ember-cli-shims": "stefanpenner/ember-cli-shims#0.0.3",
"ember-cli-test-loader": "rwjblue/ember-cli-test-loader#0.0.4",
"ember-load-initializers": "stefanpenner/ember-load-initializers#0.0.2",
"ember-qunit": "0.1.8",
"ember-qunit-notifications": "0.0.4",
"qunit": "~1.15.0"
},
"resolutions": {
"handlebars": "2.0.0",
"ember": ">=1.4 <2",
"ember-data": "~1.0.0-beta.7"
}
}
【问题讨论】:
-
尝试通过运行
bower cache clean然后ember new <your-project-name>来清理凉亭缓存 -
我注意到 100% 肯定,但你可以尝试从 models/task.js 中删除你的
export default DS.Store.extend ....,因为默认情况下设置一个application适配器将使用夹具。顺便说一句,我不确定您可以在单个 js 文件中双重导出 -
我运行了
bower cache clean,然后创建了一个新项目。我现在工作正常,但我想指出,在这个项目中,我使用的是 Ember.js v1.8.1 而不是 Ember.js v1.9.0。 我'我将通过执行bower install ember然后关注these instructions 将项目升级到1.9.0。我会立即添加一条评论,让你们知道它是否仍然有效。 -
我实际上必须使用additional set of instructions 来完成这项工作(减去使用
ember#canary部分)...如果我确认它保持稳定,那么我'将很快发布我的解决方案,以便其他人可以看到。 -
你肯定不想要
export default DS.Store.extend。请看this section in the docs on adapters
标签: javascript ember.js ember-data ember-cli