使用browserify在ember路由器中使用单独的模板文件很困难

时间:2014-07-27 19:56:58

标签: node.js ember.js browserify

我已经按照本教程http://kroltech.com/2013/12/boilerplate-web-app-using-backbone-js-expressjs-node-js-mongodb/来设置我的后端node.js服务器,但不是使用backbone-marionette作为前端我想尝试使用ember。因此,在成功设置服务器之后,我现在正在阅读本教程中的ember http://emberjs.com/guides/getting-started/

我遇到的问题是将外部模板包含在我的ember路线中。使用此代码和在浏览器中编写的待办事项模板,应用程序可以正常工作。

var Ember = require('ember');

window.Todos = Ember.Application.create();

Todos.Router.map(function() {
  this.resource('todos', { path: '/' });
});

但是,使用./templates/application.hbs编写的模板并使用browserify试试这个,

Todos.Router.map(function() {
  this.resource(require('./templates/application.hbs'), { path: '/' });
});

我收到如下所示的错误。

Uncaught TypeError: undefined is not a function myapp.js:46841
Error: Assertion Failed: The URL '/' did not match any routes in your application
    at new Error (native)
    at Error.Ember.Error (http://localhost:3300/js/myapp.js:12978:19)
    at Object.Ember.assert (http://localhost:3300/js/myapp.js:12141:11)
    at http://localhost:3300/js/myapp.js:47347:15
    at invokeCallback (http://localhost:3300/js/myapp.js:22081:19)
    at publish (http://localhost:3300/js/myapp.js:21751:9)
    at publishRejection (http://localhost:3300/js/myapp.js:22179:7)
    at http://localhost:3300/js/myapp.js:30448:7
    at Object.DeferredActionQueues.flush (http://localhost:3300/js/myapp.js:18195:24)
    at Object.Backburner.end (http://localhost:3300/js/myapp.js:18283:27) myapp.js:15589
Uncaught Error: Assertion Failed: Error: Assertion Failed: The URL '/' did not match any routes in your application 

我希望有人可以了解如何在ember路由器中包含外部模板。谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您对此进行调查!我认为我在解释我的问题时做得很差 - 我明白这是模板名称,但我不明白如何在我的应用程序中包含它。我搜索了一下,发现grunt-ember-templates

为了将来参考,他们有非常好的文档可以让你设置,这就是我的emberTemplates代码的样子。

emberTemplates: {
        compile: {
            options: {
                templateBasePath: 'client/src/templates'
            },
            files: {
                'build/templates.js': ['client/src/templates/*.hbs']
            }
        }
    },

然后我添加了'application'作为路由模板名称。 不要忘记编译你的应用程序版本中的所有build /。