【问题标题】:How can I install the OracleDB NPM package on a Heroku NodeJS server?如何在 Heroku NodeJS 服务器上安装 OracleDB NPM 包?
【发布时间】:2018-05-13 16:13:06
【问题描述】:

我有一个在 Heroku 上运行的 NodeJS 服务器,我正在尝试在推送到 Heroku 时将 oracledb 包 (https://www.npmjs.com/package/oracledb) 安装到我服务器的 node_modules。

推送到 Heroku 时,尝试安装 oracledb 软件包时出现此错误:“node-oracledb ERR!错误:找不到 Oracle 库 libclntsh.so”。我从 Heroku 推送中得到的完整错误输出可以在这里看到:https://gist.github.com/AkyunaAkish/89a4283cc2da32e26fece617d4138ce0

我尝试按照这个 repo 的自述文件来安装我认为会有所帮助的插件,但似乎没有什么不同:https://github.com/MichaelBuhler/heroku-buildpack-nodejs-oracledb

然后我去了 node-oracledb 存储库并尝试按照他们的说明在 Linux 上安装 oracledb(通过使用 Heroku 运行 bash 然后运行命令)虽然这不起作用,因为 yum 不可用并且文件系统是只读的; https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#instlinux

我不需要在我的 heroku 环境中托管 oracledb 实例,我只需要将包安装到我的 node_modules 中,以便使用我的数据库驱动程序连接到托管在其他地方的远程 oracledb。

任何关于如何根据我的需要正确设置环境的建议都将不胜感激,谢谢。

FYI:我询问了 Heroku 支持,并被告知这不是 Heroku 支持政策性质的问题,所以我来了。

【问题讨论】:

    标签: node.js heroku npm node-oracledb


    【解决方案1】:

    我在尝试使用相同方法在 Heroku 上安装 oracledb 时也遇到了问题。我分叉了它并改变了一些东西,包括脚本如何获得即时客户端库并成功安装。请在这里查看我的叉子:https://github.com/pupostd/heroku-buildpack-nodejs-oracledb.git

    【讨论】:

    • 这对我有用,谢谢。我按照自述文件中的更新说明进行操作。我还必须添加一个包含:“web: node ./server/init.js”的 Procfile,以便服务器在添加 buildpack 后正确运行。由于某种原因,新版本的 oracledb 对我来说无法正常运行,所以我更新了 package-lock.json 以使用 1.13.1 版本而不是 2+。
    • 如果 node-oracledb v2 的预构建二进制文件由于某种原因无法使用,您始终可以使用 'oracle/node-oracledb#v2.0.15' 作为您的package.json 依赖。
    【解决方案2】:

    我不需要在我的 heroku 环境中托管 oracledb 实例

    node-oracledb(通过 npm 作为 oracledb 安装)只是一个驱动程序,而不是数据库。

    我尝试按照这个 repo 的自述文件来安装我认为会有所帮助的插件,但似乎没有什么不同

    您尝试了什么(确切地)以及发生了什么(如果有错误,哪些错误)?

    yum 不可用,文件系统为只读

    你确定这是真的吗?你能指点医生吗?您需要以某种方式使依赖关系到位。您指出的“heroku-buildpack-nodejs-oracledb”的作者似乎建议将 Heroku CLI 与 buildpacks 一起使用作为一种解决方法。

    请记住,如果使用该 buildpack,您将信任其作者对 Oracle 依赖项的镜像。我建议您下载依赖项并将它们安全地放置在您自己的某个对象存储中,然后指向它。

    【讨论】:

    • 你是正确的,oracledb 只是一个驱动程序,该驱动程序是我要安装的。对于这个 repo:github.com/MichaelBuhler/heroku-buildpack-nodejs-oracledb 我运行了 buildpack 命令并使用建议的文件内容创建了 Aptfile。将这些构建包和该文件添加到我的 heroku 项目后,在推送我的代码时,我在 github gist 中显示的相同错误再次发生,因此没有任何改进。当尝试使用 yum 命令获取 oracle 客户端 yum 不是命令时,还尝试在 heroku bash 中创建新目录导致只读错误。
    • 我会考虑在安全的地方下载依赖项,并像你说的那样使用环境变量指向它们。
    • 第一个使用的构建包是 heroku-buildpack-apt。对于某些 Linux 发行版,apt 是 yum 的替代品。您可能需要使用它来安装 libaio。第二个构建包 heroku-buildpack-nodejs-oracledb 是您需要使用自己的文件进行自定义的构建包。
    猜你喜欢
    • 2016-04-08
    • 2014-08-14
    • 1970-01-01
    • 2016-03-06
    • 2021-04-12
    • 1970-01-01
    • 2015-07-11
    • 2015-11-26
    • 2012-07-02
    相关资源
    最近更新 更多