Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor CoffeeScript生成重复文件_Javascript_Coffeescript_Meteor - Fatal编程技术网

Javascript Meteor CoffeeScript生成重复文件

Javascript Meteor CoffeeScript生成重复文件,javascript,coffeescript,meteor,Javascript,Coffeescript,Meteor,刚开始探索流星,我马上就发现了一些东西,让我感到惊讶: 1) 我安装了它并运行了meteor AddCoffeeScript 2) 我将myapp.js文件转换为.coffee 3) 我保存了文件 此时,Meteor通过编译coffeescript文件生成一个新的myapp.js文件。好吧,这似乎合乎逻辑 4) 我运行了meteor。我看到应用程序位于localhost:3000,但是如果我按下按钮,按钮点击事件将触发两次:一次从myapp.js启动,一次从myapp.coffee启动 为了查看

刚开始探索流星,我马上就发现了一些东西,让我感到惊讶:

1) 我安装了它并运行了meteor AddCoffeeScript

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>')
Template.hello.events“单击输入”:->
#模板数据(如果有)在“此”中可用
console.log如果console的类型不是“未定义”,则“您按下了按钮”
$('body')。追加('test'))
当我单击按钮时,会添加两个div

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


如何将CoffeeScript与Meteor结合使用,使代码只执行一次?

当我使用商业文本编辑器webstorm时,我会选择是否让filewatcher从CoffeeScript自动生成js。如果它是自动生成的,则是您的编辑器生成js,但meteor认为它应该查找js或coffee


简言之,可能从coffeescript项目的文本编辑器中删除文件查看器/咖啡转换器。或者,从meteor中删除coffeescript包。并非两个都是

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

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

您也不应该在项目目录中看到这些已编译的js文件,如果它们在保存
时出现。coffee
是否还有其他文件?它们可能是来自您的代码ide的恶意文件


Meteor确实将coffeescript编译成js,但它是在隐藏的
.Meteor
目录中的临时目录中执行的。如果您使用的是coffeescript meteor,那么您的体验就如同使用javascript一样,这样您就不会注意到任何额外的文件。

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

jetbrains的商业编辑。我怀疑你的编辑器结构正在这样做。你用什么?这不是meteor生成的js文件。澄清一下:正如@Akshat所指出的,meteor确实创建了一个构建文件夹,并从coffeescript编译了js。我们正在讨论出现在源代码树中的js文件。有趣的是,我只是使用Sublime Text 2,据我所知,它以前从未自动编译过东西。。。除了作为meteor软件包添加外,我还在全球安装了coffee脚本npm软件包。有可能有冲突吗?作为一个实验,meteor删除coffeescript,创建一个没有匹配js的新coffeescript文件,让它拉一个警报,验证没有js,(然后不是你的环境),将咖啡添加回meteor,看看它是否拉一个警报两次(然后是meteor)你有任何构建/包/ci/自动测试的东西吗?好的,这很有趣。我的文本编辑器以前从未自动编译过文件,我也没有运行任何其他我希望能够做到的东西。任何关于运行什么可以编译两次的猜测都没有意义,但为你感到高兴!整个八月我都在做一个js/coffeescript混合项目,从来没有遇到过这个问题。