Meteor 不提供目录中的所有 HTML 个文件

Meteor doesn't serve all HTML files in a directory

在完成 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 中调试它,我发现它看到了一组不同的文件:

查看 我能够找到生成的 app.js,其中有

Template.body.addContent((function() {

但没有(预期?)

Template.task.addContent

所以我的问题是为什么 Meteor build 没有启动 task.html?

注意:我刚刚将 Meteor 更新到 1.8.0.2。这可能是该版本中的新错误吗?

更新

我使用相同的教程从头开始,并且顺利完成了第 10 步。

然后我 运行 对这两个项目进行了比较。到目前为止,我无法找到此问题的 root 原因,但是 a 原因在

中可见

.meteor/local/build/programs/web.browser/app/app.js

如所附差异所示:

原件(右侧)缺少从 task.html

生成的部分

问题还是为什么?有编译日志可以看吗?

好吧,@victor 和@fred-stark 是对的。这是 Blaze 模板中的语法错误!

<template name="task">
  <li class="{{#if checked}}checked{{/if}} {{#if private}}private{{/if}}">
    <button class="delete">&times;</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 的语法相同。错了!

如果编译器在构建过程中有一些指示,那就太好了。