在转换到Meteor的新文件结构后,整天都遇到了奇怪的错误。铁路由器似乎崩溃了。
我有layout.html和js文件。也是正确的小写名称。
完整错误:
无法找到名为" layout"的模板或"布局"。你确定你 定义了吗?
我的文件是:
client / main.html和main.js - &gt;此处定义<head></head>
import / ui / layouts - &gt;包含layout.html和layout.js
<body></body>
在这里定义。
路由器文件:
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.html
和layout.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'
,系统仍然无法看到设置。
任何人都可以对此有所了解吗?谢谢!
答案 0 :(得分:1)
将你的火焰html文件保留在/client
中 - 无法按原样导入html文件。您的js文件可以迁移到imports
目录结构,但您必须从每个文件中导出函数,然后将它们导入到需要使用它们的位置。就个人而言,我不确定是否值得将火焰项目迁移到新结构中,如果你使用反应它会更有用。
答案 1 :(得分:1)
这就是我在路由器文件中使用它的方式:
import '../../ui/layouts/mainlayout.js';
您不必将html文件放在客户端文件夹中。我把它放在导入中,并在通用页面中我在page.js中执行此操作:
import ./page.html
然后是我的其余代码。