2014-03-01 67 views
2

我在Heroku上有一个使用PhantomJS的Node.js/Express应用程序。一切都正常运行在本地(我用的是我设置使用NPM的PhantomJS - Node wrapper),但部署到生产后,我得到一个错误:在Heroku中找不到模块'phantomjs'

快递 500错误:无法找到模块“phantomjs”

我看到我需要建立一个Buildpack所以我跑:

heroku config:add BUILDPACK_URL= https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

但仍然有错误。还尝试过:

heroku config:set BUILDPACK_URL= https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

同样的结果。

我认为这个BUILDPACK_URL被忽略。

想法?

回答

4

好的,我发现这个问题。我忘了--save添加到:

npm install phantomjs 

因此,这解决了它:

npm install phantomjs --save 
3

这是有益的。我将我的评论转移到了答案上,因为这种无头的浏览需要大量的研究,细节可能会帮助其他人。

幻影名称令人困惑。 Phantom JS不是一个Node模块,你不能直接从npm注册表下载它。您可以从phantomjs.org下载可执行二进制文件安装到您的计算机上进行本地开发,您可以使用buildpack将它安装到Heroku上。

您可以为Phantom JS安装这两种流行的Node包装器。 这些不是核心phantomjs.org项目的一部分,但它们允许您从Node应用程序运行该库。

  1. npm phantomjs这是问题中引用的。该模块尝试下载稳定版本的phantomjs可执行文件作为依赖项,因此npm install phantomjs --save回答了此问题,因为二进制文件存储在服务器知道要查找Phantom JS的目录中。
  2. npm phantom

我决定使用npm phantom我的幻影包装和定制buildpack安装在Heroku幻影JS二进制文件。我不喜欢在Heroku上运行版本为1.9.x的Mac上的Phantom JS 2.0。有一些问题,所以没有Linux 2.0可用。

Heroku进行了一些小的语法更改,包括可选地使用带有数字位置的buildpacks:add --index 1标志来设置构建包的顺序。运行heroku buildpacks以查看您正在使用的内容以及安装顺序。

如果你只有一个buildpack使用:set和buildpacks都必须透过https,所以你不能只是复制和粘贴旧幻影例子与http回购。

Heroku的官方节点buildpack

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-nodejs

非官方幻影JS buildpack(不是NPM模块)

heroku buildpacks:add https://github.com/stomita/heroku-buildpack-phantomjs