【问题标题】:Cannot find module 'phantomjs' in Heroku在 Heroku 中找不到模块“phantomjs”
【发布时间】:2014-04-02 17:24:00
【问题描述】:

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

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

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

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

但仍然出现错误。也试过了:

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

同样的结果。

我认为这个 BUILDPACK_URL 被忽略了。

想法?

【问题讨论】:

    标签: node.js heroku npm phantomjs buildpack


    【解决方案1】:

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

    npm install phantomjs
    

    这样就解决了:

    npm install phantomjs --save
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      我决定使用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,并且 buildpack 必须通过 https 提供服务,因此您不能只使用 http repos 复制和粘贴旧的 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-21
        • 1970-01-01
        • 1970-01-01
        • 2016-07-31
        • 2021-06-17
        • 2016-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多