【发布时间】:2014-08-11 17:30:12
【问题描述】:
我使用的是 Ember CLI 0.0.36。当我在我的项目文件夹中运行ember server 时,我的理解是埋在某些 Brocoli 进程中的服务器启动了。但是,我想编写一个自定义 Express 服务器,并让我的应用程序指向该 Node.js 代码作为其后端。我将如何在 Ember CLI 框架中执行此操作?
更新:
在@user3155277's answer 之后,我添加了一个适配器文件,如下所示:
应用名称/app/adapters/application.js:
import DS from 'ember-data';
export default DS.RESTAdapter.reopen({ namespace: 'api' });
我创建了一个 Express 服务器,并将其放在我的应用程序的根目录中:
app-name/server.js:
var express = require("express"),
app = express(),
path = require("path");
app.get("/api/test", function(req, res) {
res.json({
hello: "world"
});
});
var server = app.listen(8147);
在 Ember 应用中,我的索引路由是这样定义的:
应用名称/app/routes/index.js:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return Ember.$.getJSON("/api/test").then(function(data) {
return data;
});
}
});
然后我在命令行上像这样启动服务器:
ember serve --proxy http://localhost:8147/
我收到以下错误:
version: 0.0.35-master-86abdb11ba
Proxying to http://localhost:8147/
object is not a functionTypeError: object is not a function
at Class.module.exports.Task.extend.start (D:\ember-cli\lib\tasks\server\express-server.js:41:43)
at Class.module.exports.Task.extend.run (D:\ember-cli\lib\tasks\serve.js:40:23)
at Class.module.exports.Command.extend.run (D:\ember-cli\lib\commands\serve.js:35:18)
at Class.Command.validateAndRun (D:\ember-cli\lib\models\command.js:74:15)
at CLI.<anonymous> (D:\ember-cli\lib\cli\cli.js:33:20)
at tryCatch (D:\ember-cli\node_modules\rsvp\dist\commonjs\rsvp\-internal.js:163:16)
at invokeCallback (D:\ember-cli\node_modules\rsvp\dist\commonjs\rsvp\-internal.js:172:17)
at publish (D:\ember-cli\node_modules\rsvp\dist\commonjs\rsvp\-internal.js:150:13)
at flush (D:\ember-cli\node_modules\rsvp\dist\commonjs\rsvp\asap.js:51:9)
at process._tickCallback (node.js:419:13)Livereload server on port 35729
【问题讨论】:
-
Ember-cli 的迭代速度如此之快,但是 0.0.39 使这不那么痛苦。从命令行和繁荣生成一个 api-stub。你只需要 var express = require('express') 但在 0.0.40 中不会有。我之前在 api-stubs 上遇到过同样的问题
-
嘿@elrick,我等待 0.0.40 出来,但我仍然对如何设置整个事情感到很困惑。你能举个例子吗?
标签: ember-cli