流星并不提供目录中的所有HTML文件

时间:2019-01-17 19:30:14

标签: javascript meteor

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

Chrome debug snapshot

看着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

如所附差异所示: diff of new vs original

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

生成的部分

问题仍然是为什么?我可以查看任何编译日志吗?

1 个答案:

答案 0 :(得分:0)

好吧,@ 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的语法相同。错了!

在构建过程中,如果编译器发出一些指示,还是很好。