node.js - glibc 找不到符号错误

标签 node.js docker oracle11g glibc node-oracledb

最近,我开始使用 Docker 来运行我的 Node 项目,并希望添加 Oracle 即时客户端驱动程序。据我所知,Oracle 即时客户端驱动程序是针对 glibc 库编译的,而我的基于 Alpine 的 Docker 镜像包含 musl 库。

所以我需要一种方法来包含 glibc 库,我偶然发现了 docker-glibc-builder它将 glibc 库打包为压缩包。

将 glibc 库包含到容器中后,当我的 Node 项目调用 Oracle 即时驱动程序时,我开始注意到以下错误。

Error: Error relocating /opt/oracle/drivers/instantclient/libclntsh.so.11.1: getcontext: symbol not found
    at Error (native)
    at Object.Module._extensions..node (module.js:568:18)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (node_modules/oracledb/lib/oracledb.js:32:19)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (node_modules/oracledb/index.js:1:80)

有人遇到过这样的错误吗?

最佳答案

So I needed a way to include the glibc libraries

请注意,您不能在单个进程中混合和匹配两个单独的libc 库。您必须选择其中之一。此外,您必须针对要在运行时使用的同一库进行构建(仅在 Docker 镜像中包含运行时包是不够的)。

According to musl wiki ,musl不提供getcontext。您得到的错误与您继续使用 musl 而不是 glibc 一致。

关于node.js - glibc 找不到符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134760/

相关文章:

node.js - 将变量渲染到 ejs 模板

node.js - 从 node.js 中的外部网页获取所有图像 url 的最佳方法是什么

c# - 在 docker 容器上运行/初始化 QuestPDF 时出错

oracle - oracle中格式化xmltype的数据

sql - Oracle XE 11g 表未正确显示

javascript - 在Nodejs中创建临时对象

node.js - 有没有办法从我的 Node.js 服务器使用 Firebase Admin SDK 发送验证电子邮件?

Docker共享公共(public)bins和libs?

linux - 构建具有 RPM 升级 future 前景的 Docker 镜像

c# - Oracle 号码映射 (ODP.NET)