【问题标题】:exec and PATH on heroku with buildpacksheroku 上的 exec 和 PATH 与 buildpacks
【发布时间】:2012-09-29 07:43:02
【问题描述】:

我使用this buildpack 以便在heroku 上使用casperjs

创建应用后,我会检查我的PATH

$ heroku config:get PATH
/usr/local/bin:/usr/bin:/bin:/app/vendor/phantomjs/bin:/app/vendor/casperjs/bin

好的,casperjs 在这里!

--

过程文件

scraper: node scraper.js

scraper.js

var exec = require('child_process').exec;
exec('casperjs casper-script.js');

--

但是当我启动爬虫进程时,它会崩溃并显示以下日志:

2012-10-09T02:23:38+00:00 heroku[scraper.1]: Starting process with command `node scraper.js`
2012-10-09T02:23:39+00:00 app[scraper.1]: bash: node: command not found

为什么exec 找不到PATH 中的casperjs

PS:我尝试了spawn,但没有更多的运气......

[编辑]:这里有一个可测试的要点https://gist.github.com/3856317

【问题讨论】:

  • 您确定失败的是casperjs 命令而不是node 命令吗?
  • @vinayr:看来你是对的,我只是尝试了heroku run node 并得到了bash: node: command not found。但怎么可能:我有一个不错的package.json,所以这个应用程序应该被检测为一个节点......有什么线索吗?谢谢

标签: node.js heroku environment-variables child-process buildpack


【解决方案1】:

知道了!

@vinayr:you were rightexeccasperjs 命令均未涉及此问题,它是 node,即 command not found

我认为安装带有 phantomjscasperjs(例如:heroku-buildpack-casperjs)的 buildpack 会为我的应用保留节点功能,但事实并非如此。

为了让它工作(node+phantomjs+ca​​sperjs),我宁愿分叉 heroku-buildpack-nodejs buildpack 并向其中添加 phantomjs/casperjs 二进制文件,我可以称之为:heroku-buildpack-nodejs-casperjs

换句话说,当使用自定义构建包时,您必须自己包含节点支持。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 2016-12-28
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多