2011-06-15 83 views
50

我有一个用CoffeeScript编写的node.js应用程序。我可以在Heroku中运行coffeescript吗?

我想知道需要什么才能在Heroku上托管应用程序。

谢谢

+1

据我所知,heroku只托管ruby应用程序。 – Ikke 2011-06-15 10:26:30

+4

它也承载node.js。 – donald 2011-06-15 10:29:54

+0

他们最近添加了它。请注意,如果您想在Heroku的Rails应用程序中运行CoffeeScript,只需将最新的'therubyracer'添加到您的Gemfile中,并且应该设置。 – 2011-06-15 15:06:47

回答

1

由于Heroku的更新,现在允许npm安装coffee-script源代码。下面的答案是Heroku完全支持node.js之前的解决办法。为了获得更好的解决方案,请参阅更高评分的答案,解释如何在Heroku上简单使用npm上的coffee-script


说实话最好的办法是使用coffee -c filename像彼得建议事先编译它,但我不知道,如果你能有一个排序的“预加载” preload.js,将调用使用coffeescript脚本为node_module然后编译()要使用的脚本。这样,您可以在heroku中的本地节点中使用它们,而无需处理回购库中的额外文件。

npm install coffee-script 

然后在inital应用程序,它使用JavaScript编写和使用咖啡的编译功能调用*.coffee文件:

var coffee = require('coffee-script'); 
coffee.compile('./server.coffee'); 
// could be coffee.run(file) instead, not sure 

yourapp.coffee尝试

console.log 'It worked!' 

我不知道如果这会起作用,或者如果这甚至是该函数的正确语法。 https://github.com/jashkenas/coffee-script/blob/master/lib/coffee-script.js#L24

如果你问在红宝石做,这里是这样的:

演练如何在轨在Heroku上使用的CoffeeScript: http://drnicwilliams.com/2010/03/15/using-coffeescript-in-rails-and-even-on-heroku/

它建议使用bistro_car(https://github.com/jnicklas/bistro_car

gem install bistro_car 
mkdir -p app/scripts 

并将其添加到您的Rails conf/environment.rb

config.gem 'bistro_car' 

如果我发现其他方式或本机运行*.coffee javascript应用程序,我会更新此答案,但希望这会给你一些想法如何让它工作。

这里有一对夫妇更多的例子,但他们似乎都使用红宝石VS Node.js的还有:

http://forrst.com/posts/Doing_CoffeeScript_on_Heroku_a_Ruby_gem-OBk HTTP://www.tangiblecolors。com/first-steps-with-coffeescript-and-how-to-use

希望这有助于一点点。

+0

我认为斯利克在正确的轨道上。你不需要任何二进制文件来运行'。咖啡文件;你只需要咖啡脚本库,这是纯JS。事实上,'coffee'二进制文件被实现为纯JS(它包裹了CoffeeScript的'command.js')。 – 2011-06-15 15:09:32

+0

至于这篇文章的一些细节:你应该使用'coffee.run'; 'coffee.compile'只是给你一个字符串的JS输出。 Nic博士在Heroku上使用CoffeeScript在Rails上的帖子已经过时;你应该使用Rails 3.1或[Barista](https://github.com/sutto/barista),而不是bistro_car(它在一年内还没有更新,除此之外,不支持Rails 3 )。 – 2011-06-15 15:30:54

+0

我刚刚做了一个样本:https://github.com/lfreneda/how-to-coffeescript-on-heroku – 2015-12-01 17:56:17

0

我GOOGLE了一下,但它似乎不清楚。这里是heroku指南,它不提及咖啡标记。 http://devcenter.heroku.com/articles/node-js

我认为你可以在你的应用程序的git repo中运行coffee -c .,然后提交并推送到heroku(脚本这是你的部署脚本的一部分),然后使用该进程编译的.js代码。

9

我能够通过只包括我依赖CoffeeScript中,然后将“咖啡index.coffee”在我Procfile相处得很好得到

有一个启动的成本,每次编译你的服务器启动,但除此之外,你应该没问题。

2

我得到它通过在我的package.json咖啡脚本并添加node_modules /咖啡脚本/ bin添加到我的Heroku PATH

118

迈克尔·布鲁姆是正确的,你不需要任何额外的代码运行工作在heroku上的CoffeeScript节点应用程序。这是我如何做到的:

将当前版本中的coffee-script添加到您的依赖package.json中。这可能看起来有点像这样:

{ 
    "name": "My-CoffeeScript-App-on-Heroku", 
    "version": "0.0.1", 
    "dependencies": { 
    "coffee-script": "1.1.2" 
    } 
} 

然后修改在Procfile您的节点的应用程序使用的咖啡,而不是节点的条目。

$ gem install foreman 
$ foreman start 
21:13:36 web.1  | started with pid 4711 

然后尝试:对于只有一个Web入口的应用程序,这可能看起来像这样

web: coffee app.coffee 

为了检验这是否会在Heroku上工作,你可以使用工头宝石尝试在localhost一推Heroku的,你会看到这样的事情在依赖安装:

如果
-----> Installing dependencies with npm 1.0.8 
     [email protected] ./node_modules/coffee-script 
     [email protected] ./node_modules/jade 
     ├── [email protected] 
     └── [email protected] 

不知道有与程序,但上述方法的问题似乎是大材小用我因为你搞乱了运行时环境的代码。

希望这有助于有人:)

+9

这应该是被接受的答案。 – kynan 2012-05-21 00:25:14

+11

CoffeeScript不是全局安装的,所以你应该使用本地安装的。更新您的'Procfile',如:'web:node_modules/coffee-script/bin/coffee app.coffee' – 2012-07-11 08:42:24

+0

另外,请确保您的应用程序使用process.env.PORT进行设置... – 2012-09-29 17:34:39

0

还有的是一个custom buildpack相当一段时间现在由Chris Fung提供。我一直在使用它几年,直到最近它停止与Heroku上的新Cedar-14堆栈一起工作。所以,我修改了Chris的buildpack,你现在可以用这个new custom buildpack在Heroku上运行coffeescript应用程序。

相关问题