2017-08-27 55 views
2

过渡到Meteor的新文件结构后,整天都有奇怪的错误。铁路由器似乎崩溃了。铁路路由器找不到名为“布局”或“布局”的模板

我确实有layout.html和js文件。也以适当的小写字母命名。

完整的错误:

Couldn't find a template named "layout" or "layout". Are you sure you defined it?

我的文件有:

  • 客户端/ main.html中和main.js - ><head></head>在这里被定义

  • import/ui/layouts - >包含layout.html和layout.js <body></body>在此处定义。

  • 进口/启动/两 - >包含 router.js

路由器文件:

Router.configure({ 
    layoutTemplate : 'layout', 
    loadingTemplate : 'loading', 
    notFoundTemplate : 'notFound', 
    waitOn: function() { 
     return [ 
     Meteor.subscribe('allUsers'), 
     Meteor.subscribe('otherUser') 
     ]; 
    } 
}); 

Router.route('/',{ 
    name: 'home', 
    onBeforeAction: function() { 
     if(Meteor.userId()){ 
     Router.go('/new'); 
     } else { 
     this.next(); 
     } 
    } 
}); 

当我CONSOLE.LOG typeof(Template.layout),则返回undefined。

所以,当我与main.html移动都layout.htmllayout.js最多客户端文件夹,一起...错误消失,但仍显示空白页,但给了错误缺少一个名为“设置”页面(但settings.html和js文件都存在于import/ui/pages然而CONSOLE.LOG上述返回的对象奇怪

PS:。在边注

我在main.js文件中的服务器文件夹试图import '/imports/startup/client';让上面的htmls工作,我得到了'Error: Cannot find module '/imports/startup/client'。 st首先解决上述问题。

我还在客户端main.js中添加了import '../imports/ui/layouts/layout.html';import '../imports/ui/pages';。但错误说Cannot find module '../imports/ui/pages'并且设置对系统仍然不可见。

任何人都可以对此有所了解?谢谢!

回答

1

让你的火焰html文件在/client - html文件无法按原样导入。您的js文件可以迁移到imports目录结构,但您必须从每个文件导出函数,然后将它们导入需要使用它们的位置。就我个人而言,我不确定将新项目移植到新结构中是否值得,如果您使用的是反应,它会更有用。

+0

在给出的例子中,流星提到进口有startup,ui ...其中ui有单独的页面。那纯粹是为了js和jsx?通过客户端...是仅限于客户端主文件夹还是进口/启动/客户端? – Thinkerer

+0

在反应中只有真正的js/jsx和css文件,这两个文件都可以导入。 HTML文件没有真正使用。 '/ client'或其子目录下的文件会自动缩小,捆绑并发送到客户端,但'imports'下的任何内容都不会被发送到客户端,除非它被导入。通常是'/ client/main。js'执行第一次导入,然后它导入的文件导入其他文件等等。 –