在处理Meteor TODO应用教程时,我在第10步遇到了问题,发布和订阅。
问题在于 imports / ui / task.js 中的以下代码不再起作用:
import { Meteor } from 'meteor/meteor'
import { Template } from 'meteor/templating';
import './task.html'; // <= fails in the browser
目录 imports / ui 包含:
body.html body.js task.html task.js
我可以import './body.html';
好,但不能import './task.html';
或其他任何HTML文件,例如我试图将 task.html 重命名为 flask.html 并进行相应的导入,但仍然失败。
尝试在Chrome中进行调试,我发现它看到了一组不同的文件:
看着this question,我能够找到生成的 app.js ,其中包含
Template.body.addContent((function() {
但没有(预期的?)
Template.task.addContent
所以我的问题是为什么Meteor构建没有选择 task.html ?
注意:我刚刚将Meteor更新为1.8.0.2。那可能是该版本中的新错误吗?
更新
我从同一教程重新开始,并顺利完成了第10步。
然后我对两个项目进行了比较。到目前为止,我无法找到导致此问题的 root 原因,但是在
中可见 a 原因.meteor / local / build / programs / web.browser / app / app.js
原始文件(右侧)缺少从 task.html
生成的部分问题仍然是为什么?我可以查看任何编译日志吗?
答案 0 :(得分:0)
好吧,@ victor和@ fred-stark是对的。这是Blaze模板中的语法错误!
<template name="task">
<li class="{{#if checked}}checked{{/if}} {{#if private}}private{{/if}}">
<button class="delete">×</button>
<input type="checkbox" checked="{{checked}}" class="toggle-checked" />
{{#if isOwner}}
<button class="toggle-private">
{{#if private}}
Private
{{#else}} // <= should be {{else}} !
Public
{{/if}}
</button>
{{/if}}
<span class="text"><strong>{{username}}</strong> - {{text}}</span>
</li>
</template>
我通常会在学习教程时尝试全部键入自己的内容,而不是复制粘贴。因此,在这里我打错了打字,在潜意识里假设else
的语法与if
的语法相同。错了!
在构建过程中,如果编译器发出一些指示,还是很好。