【问题标题】:Can I run coffeescript in Heroku?我可以在 Heroku 中运行咖啡脚本吗?
【发布时间】:2011-09-15 10:09:30
【问题描述】:

我有一个用 CoffeeScript 编写的 node.js 应用程序。

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

谢谢

【问题讨论】:

  • 据我所知,heroku 只托管 ruby​​ 应用程序。
  • 他们最近添加了它。请注意,如果您想在 Heroku 上的 Rails 应用程序中运行 CoffeeScript,只需将最新的 therubyracer 添加到您的 Gemfile 即可。
  • 我建议你接受 florian.k 的回答,它比目前接受的要简单得多。
  • 你不应该在coffeescript中开发并在编译好的JS中部署吗?如果 heroku 的编译器版本与您的开发机器上的不同怎么办。考虑将编译步骤推送到生产服务器会出现什么问题,这将是一场噩梦。

标签: node.js heroku coffeescript


【解决方案1】:

Michael Blume 是对的,您不需要任何额外的代码即可在 heroku 上运行 CoffeeScript 节点应用程序。我就是这样做的:

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

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

然后修改Procfile 中您的节点应用程序的条目以使用咖啡而不是节点。对于只有一个 Web 条目的应用程序,这可能看起来像这样

web: coffee app.coffee

要测试这是否适用于 Heroku,您可以使用 foreman gem 在 localhost 上进行尝试:

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

然后尝试推送到heroku,你会在依赖安装中看到类似这样的内容:

-----> Installing dependencies with npm 1.0.8
       coffee-script@1.1.2 ./node_modules/coffee-script 
       jade@0.15.3 ./node_modules/jade 
       ├── mkdirp@0.0.6
       └── commander@0.1.0

不确定该过程是否存在问题,但上述方法对我来说似乎有点矫枉过正,因为您将代码弄乱了运行时环境的东西。

希望这对某人有帮助:)

【讨论】:

  • CoffeeScript 没有全局安装,所以你应该使用本地安装的。更新您的Procfile,例如:web: node_modules/coffee-script/bin/coffee app.coffee
  • 这是正确答案。我有一个 coffescript/nodejs 应用程序的示例,它可以完成所有这些并集成 nodemon 用于开发目的...github.com/lookfirst/convert
  • 我最近再次验证了这一点,并希望与您分享示例代码:github.com/floriankrueger/heroku-on-coffee
  • 这也适用于LiveScript,只需将LiveScript 放入您的依赖项中,并在您的Procfile 中放入web: lsc app.ls
  • 更短:web: node_modules/.bin/coffee app.coffee
【解决方案2】:

只需在我的依赖项中包含coffeescript,然后将'coffee index.coffee'放入我的Procfile中,我就能相处得很好

每次服务器启动时编译都会产生启动成本,但除此之外你应该没问题。

【讨论】:

    【解决方案3】:

    我通过在我的 package.json 中包含 coffee-script 并将 node_modules/coffee-script/bin 添加到我的 Heroku PATH 来让它工作

    【讨论】:

      【解决方案4】:

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


      老实说,最好的方法是像 Peter 建议的那样使用 coffee -c filename 事先编译它,但我想知道你是否可以有一种“预加载”preload.js,它将使用 coffeescript 调用脚本作为a node_module 然后 compile() 要使用的脚本。这样您就可以在 heroku 上的节点中本地使用它们,而无需处理 repo 中的额外文件。

      npm install coffee-script
      

      然后在初始应用中,用javascript编写并使用coffee的compile函数调用*.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

      如果你想用 ruby​​ 来做,这里是:

      演练如何在 Heroku 上的 rails 中使用 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 应用程序,我会更新这个答案,但希望这会给你一些关于如何让它工作的想法。

      这里还有几个例子,但它们似乎都在使用 ruby​​ 和 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

      希望这会有所帮助。

      【讨论】:

      • 我认为 Slick 的方向是正确的。您不需要任何二进制文件来运行.coffee 文件;你只需要 coffee-script 库,它是纯 JS。事实上,coffee 二进制文件是作为纯 JS 实现的(它包装了 CoffeeScript 的 command.js)。
      • 关于帖子的一些细节:你应该使用coffee.runcoffee.compile 只是将 JS 输出作为字符串提供给您。 Nic 博士关于在 Heroku 上使用 CoffeeScript on Rails 的帖子已过时;您应该使用 Rails 3.1 或 Barista,而不是 bistro_car(一年多没有更新,而且不支持 Rails 3)。
      【解决方案5】:

      我四处搜索,但似乎不清楚。这是heroku指南,没有提到coffeescript。 http://devcenter.heroku.com/articles/node-js

      我认为您可以在提交并推送到 heroku 之前在您的应用程序的 git 存储库中运行 coffee -c .(将此脚本作为部署脚本的一部分编写),然后使用该过程编译的 .js 代码。

      【讨论】:

        【解决方案6】:
        • coffee-script 添加到您的package.json
        • 将您的 Profile 更改为 web: coffee app.coffee

        florian.k's answer

        【讨论】:

          【解决方案7】:

          Chris Fung 的 custom buildpack 已经有一段时间了。我已经使用它几年了,直到最近它停止在 Heroku 上使用新的 Cedar-14 Stack 时。所以,我修改了 Chris 的 buildpack,你现在可以使用这个 new custom buildpack 在 Heroku 上运行 coffeescript 应用程序。

          【讨论】:

            猜你喜欢
            • 2015-01-28
            • 2016-06-27
            • 2014-02-14
            • 2013-06-11
            • 2013-02-13
            • 1970-01-01
            • 2014-04-06
            • 1970-01-01
            • 2015-03-03
            相关资源
            最近更新 更多