铁路由器无法找到名为" layout"的模板。或"布局"

时间:2017-08-27 09:43:11

标签: meteor meteor-blaze

在转换到Meteor的新文件结构后,整天都遇到了奇怪的错误。铁路由器似乎崩溃了。

我有layout.html和js文件。也是正确的小写名称。

完整错误:

  

无法找到名为" layout"的模板或"布局"。你确定你   定义了吗?

我的文件是:

  • client / main.html和main.js - &gt;此处定义<head></head>

  • import / ui / layouts - &gt;包含layout.html和layout.js <body></body>在这里定义。

  • import / startup / both - &gt;包含 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。

所以,当我将layout.htmllayout.js同时移动到客户端文件夹时,与main.html一起...错误消失但仍然显示空白页面,但是错误地指出了一个名为的页面&#34;设置&#34;缺少(但是settings.html和js文件都存在于import/ui/pages中。但是上面的console.log返回了一个对象。奇怪。

PS:旁注

我在服务器文件夹的main.js文件中尝试import '/imports/startup/client';以使htmls在上面工作。我得到了'Error: Cannot find module '/imports/startup/client'。所以我只是先说出来解决上述问题。

我还在客户端main.js中添加了import '../imports/ui/layouts/layout.html';import '../imports/ui/pages';。但错误显示Cannot find module '../imports/ui/pages',系统仍然无法看到设置。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这就是我在路由器文件中使用它的方式:

import '../../ui/layouts/mainlayout.js';

您不必将html文件放在客户端文件夹中。我把它放在导入中,并在通用页面中我在page.js中执行此操作:

import ./page.html然后是我的其余代码。