Heroku - Express 应用程序 - 错误:spawn compass ENOENT

3
我正在使用官方的express生成器和heroku上的CEDAR堆栈生成的应用程序。
当我尝试访问样式表(/stylesheets/style.css)时,出现以下错误。所有其他静态资产都可以正常加载,并且Sass版本的样式表(/stylesheets/style.scss)也可以正常加载。 可能是什么问题呢?
2015-03-09T22:27:54.648677+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=GET path="/stylesheets/style.css" host=**.herokuapp.com request_id=c29b6d81-3dae-4e3f-a35a-53f3dea3fb48 fwd="80.244.17.16" dyno=web.1 connect=0ms service=167ms status=503 bytes=0
2015-03-09T22:27:54.589437+00:00 app[web.1]: events.js:85
2015-03-09T22:27:54.589449+00:00 app[web.1]:     at Process.ChildProcess._handle.onexit (child_process.js:1046:32)
2015-03-09T22:27:54.589447+00:00 app[web.1]:     at exports._errnoException (util.js:746:11)
2015-03-09T22:27:54.589444+00:00 app[web.1]:             ^
2015-03-09T22:27:54.589442+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2015-03-09T22:27:54.589446+00:00 app[web.1]: Error: spawn compass ENOENT
2015-03-09T22:27:54.589452+00:00 app[web.1]:     at process._tickCallback (node.js:355:11)
2015-03-09T22:27:54.671202+00:00 app[web.1]: 
2015-03-09T22:27:54.589451+00:00 app[web.1]:     at child_process.js:1137:20

你好,你正在使用node-compass中间件吗? - Benoit Guigal
1
那么这与此错误 https://github.com/nathggns/node-compass/issues/34 有关。为了使node-compass正常工作,应在主机上安装Compass gem。 - Benoit Guigal
Heroku支持建议添加此构建包https://github.com/stephanmelzer/heroku-buildpack-nodejs-grunt-compass,但我仍然收到那个错误。 - Stefanos Chrs
我不确定Heroku的工作原理,但在我看来,它似乎很难微调安装的软件。您可以考虑部署到云服务,以获得更多控制权。我发现DigitalOcean非常易于使用。 - Benoit Guigal
1个回答

2

经过大量的故障排除,我终于找到了问题的根源。

  • heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git
  • 在根目录下创建一个名为.buildpacks的文件,并添加以下内容:https://github.com/heroku/heroku-buildpack-nodejs.githttps://github.com/heroku/heroku-buildpack-ruby.git
  • 在根目录下创建一个名为Gemfile的文件,并添加以下内容: source "https://rubygems.org" gem "compass"
  • 因为heroku无法正确生成Gemfile.lock,所以你还需要创建一个名为Gemfile.lock的文件,并运行bundle install
  • 推送到heroku,然后node-compass就可以工作了 :)

1
太棒了!你能分享一下你是在哪里找到这些的吗?这解决了我的问题。我想知道是否可以将其纳入Express生成器中,因为这真的很麻烦。 - JDillon522
@JDillon522 我进行了大量搜索,通过跟踪错误到错误,找到了这个。 - Stefanos Chrs
@StefanosChrs 这对我也有效。我只是使用了带有 "postinstall": "grunt build" 步骤的 SASS。我不得不改变顺序并先安装 Ruby,但一切都运行得非常好。谢谢 :) - Quang Van

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接