我使用this buildpack为了使用casperjs在 Heroku 上。
创建应用程序后,我会检查我的PATH
$ heroku config:get PATH
/usr/local/bin:/usr/bin:/bin:/app/vendor/phantomjs/bin:/app/vendor/casperjs/bin
好的,casperjs 就在这里!
--
Procfile
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
最佳答案
明白了!
@vinayr:you were right ,exec
和 casperjs
命令均不涉及此问题,而是 node
导致command not find
!
我认为安装带有 phantomjs
和 casperjs
的构建包(例如: heroku-buildpack-casperjs )将为我的应用程序保留 Node 功能,但事实似乎并非如此。
为了使其工作(node+phantomjs+casperjs),我不得不 fork heroku-buildpack-nodejs buildpack 并向其中添加 phantomjs
/casperjs
二进制文件,我可以将其称为: heroku-buildpack-nodejs-casperjs .
换句话说,当使用自定义构建包时,您必须自己包含 Node 支持。
关于node.js - 使用 buildpacks 在 heroku 上执行和 PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792191/