3

我在 Heroku 上有一个使用 PhantomJS 的 Node.js/Express 应用程序。一切都在本地运行良好(我正在使用PhantomJS -我使用 NPM 设置的节点包装器),但在部署到生产环境后出现错误:

Express 500 错误:找不到模块“phantomjs”

我看到我需要设置一个 Buildpack,所以我跑了:

heroku 配置:添加 BUILDPACK_URL= https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

但仍然得到错误。也试过:

heroku 配置:设置 BUILDPACK_URL= https://github.com/stomita/heroku-buildpack-phantomjs.git git push heroku master

同样的结果。

我认为这个 BUILDPACK_URL 被忽略了。

想法?

4

2 回答 2

4

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

npm install phantomjs

所以这解决了它:

npm install phantomjs --save
于 2014-03-01T16:14:41.567 回答
4

这很有帮助。我将我的评论移至答案,因为这种无头浏览需要大量研究,细节可能对其他人有所帮助。

幻名令人困惑。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 幻象

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

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

如果您只有一个 buildpack 使用:set并且必须提供 buildpacks,https那么您不能只是复制和粘贴带有httprepos 的旧 Phantom 示例。

Heroku 的官方节点构建包

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

非官方 Phantom JS buildpack(不是 npm 模块)

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

于 2015-09-29T20:59:58.827 回答