【问题标题】:Meteor CoffeeScript generates duplicate filesMeteor CoffeeScript 生成重复文件
【发布时间】:2013-09-21 08:24:56
【问题描述】:

刚开始探索 Meteor,我马上就有了一些让我陷入困境的东西:

1) 我安装并运行meteor add coffeescript

2) 我将 myapp.js 文件转换为 .coffee。

3) 我保存了文件。

此时Meteor通过编译coffeescript文件生成了一个新的myapp.js文件。好吧,这似乎合乎逻辑。

4) 我跑了meteor。我在localhost:3000 看到该应用程序,但是如果我点击按钮,按钮点击事件会触发两次:一次来自myapp.js,一次来自myapp.coffee

只是为了看一个测试,我添加了这个:

Template.hello.events "click input": ->
  # template data, if any, is available in 'this'
  console.log "You pressed the button"  if typeof console isnt "undefined"
  $('body').append('<div>test</div>')

当我单击按钮时,添加了两个 div。

现在,如果我删除已编译的myapp.js 文件,“您按下按钮”只会触发一次,并且只有一个 div 附加到页面。但是,如果我保存 .coffee 文件,每次都会生成一个新的 .js 文件,现在所有的 JS 都会执行两次。

您应该如何将 CoffeeScript 与 Meteor 一起使用,以便您的代码只执行一次?

【问题讨论】:

    标签: javascript coffeescript meteor


    【解决方案1】:

    当我使用商业文本编辑器 webstorm 时,我会选择是否让 filewatcher 从 coffeescript 自动生成 js。如果它自动生成,它是你的编辑器生成 js,但流星认为它应该寻找 js 或咖啡。

    简而言之,可能从您的咖啡脚本项目的文本编辑器中删除文件观察器/咖啡转换器。或者,从流星中删除 coffeescript 包。两者都不是

    【讨论】:

    • jetbrains 的商业编辑。我怀疑您的编辑器结构正在这样做。你用什么?生成js文件的不是meteor。
    • 澄清一下:正如@Akshat 指出的那样,meteor 确实创建了一个构建文件夹,并从 coffeescript 编译了 js。我们正在讨论出现在您的源代码树中的 js 文件。
    • 有趣,我只是在使用 Sublime Text 2,据我所知,它以前从未自动编译过东西……除了添加之外,我还全局安装了 coffee-script npm 包作为流星包。那里可能有冲突吗?
    • 作为一个实验,meteor 删除coffeescript,创建一个没有匹配js 的新coffeescript 文件,让它拉警报,验证没有js,(然后不是你的环境),将coffee 添加回meteor,看看它是否拉警报两次(然后是流星)
    • 你有任何构建/打包/ci/autotest 的东西吗?
    【解决方案2】:

    如果您确定另一个myapp.js 是从名为myapp.js 的文件中抛出的,您可能还没有摆脱原来的myapp.js

    coffeescript 编译的 js 文件应该是myapp.coffee.js(你只能在 chrome 的 web 检查器中看到)。

    您也应该不会在您的项目目录中看到这些已编译的 js 文件,如果它们在您保存 .coffee 时出现在其他地方,它们是流氓文件,可能来自您的代码 ide ?.

    Meteor 确实将咖啡脚本编译成 js,但它是在隐藏的 .meteor 目录中的一个临时目录中进行的。如果您使用的是 coffeescript,那么流星想要体验就像是 javascript,这样您就不会注意到任何额外的文件。

    【讨论】:

    • 好的,这很有趣。我的文本编辑器以前从未自动编译过文件,我也没有运行任何其他我希望这样做的东西。有什么可以编译两次的猜测吗?
    【解决方案3】:

    所以,我运行了meteor remove coffeescriptmeteor add coffeescript,现在它按预期工作,没有重复文件。有点奇怪,但至少它起作用了!

    【讨论】:

    • 没有意义,但为你高兴!我整个 8 月都在做一个混合 js/coffeescript 项目,从来没有遇到过这个问题。
    猜你喜欢
    • 2017-03-05
    • 2014-07-13
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多