node.js - 使用 buildpacks 在 heroku 上执行和 PATH

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

我使用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 rightexeccasperjs 命令均不涉及此问题,而是 node 导致command not find!

我认为安装带有 phantomjscasperjs 的构建包(例如: heroku-buildpack-casperjs )将为我的应用程序保留 Node 功能,但事实似乎并非如此。

为了使其工作(node+phantomjs+ca​​sperjs),我不得不 fork heroku-buildpack-nodejs buildpack 并向其中添加 phantomjs/casperjs 二进制文件,我可以将其称为: heroku-buildpack-nodejs-casperjs .

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

关于node.js - 使用 buildpacks 在 heroku 上执行和 PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792191/

相关文章:

javascript - 是否必须将我的应用程序的 Node.js 版本从 v0.10 升级到 v4 或 v6?

javascript - 以编程方式将参数传递给 grunt 任务?

node.js - 如何将 jenkins 管道与 nvm 包装器插件一起使用?

css - 部署到 Heroku 时,Rails 中未显示 FontAwesome 图标

python - cron 运行脚本时的环境变量

javascript - Express 中间件没有效果

python - 在 Heroku 应用程序中同时运行 Django 和 Node

python - 在 Django 中收到电子邮件时将对象保存到数据库

django - Wagtail 设置仅使用 .dev

apache-spark - 如何使用spark-submit在集群模式下将环境变量传递给spark driver