1

我使用this buildpack爲了在heroku上使用casperjsexec和PATH on heroku搭建包

一旦我的應用程序創建,檢查我的PATH

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

OK,casperjs是在這裏!

-

Procfile

​​

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沒有找到casperjs這是在PATH

PS:我試着用spawn,但沒有更多的運氣......

[編輯]:這裏可測試要點https://gist.github.com/3856317

+1

你確定它是'casperjs'命令失敗而不是'node'命令嗎? – vinayr

+0

@vinayr:看起來你是對的,我只是嘗試'heroku運行節點'並得到'bash:node:command not found'。但它怎麼可能:我有一個體面的'package.json',所以這個應用程序應該被檢測爲一個節點...任何線索?謝謝 – abernier

回答

2

明白了!

@vinayr:you were right,既不exec也不casperjs命令參與了這個問題,它是node這是command not found

我以爲安裝了一個包含phantomjscasperjs(例如:heroku-buildpack-casperjs)的buildpack會爲我的應用保留節點功能,但似乎並不如此。

要使其工作(節點+ phantomjs + casperjs)我而不得不用叉子叉heroku-buildpack-nodejs buildpack並添加phantomjs/casperjs二進制文件給它,我可以打電話:heroku-buildpack-nodejs-casperjs

換句話說,使用自定義buildpack時,您必須自己包含節點支持。

+1

或者你可以使用多件包裝,這是很好的,所以你不必捆綁一切。 https://github.com/ddollar/heroku-buildpack-multi –