You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何libxml2_xpath报Invalid FFI pointer type错误?Docker环境也失败

在Docker环境中运行Deno libxml2_xpath失败的问题

问题场景

在Macbook M1设备上,通过Docker运行Deno的libxml2_xpath库时执行失败,所用命令如下:

docker run  \
--interactive  \
--tty   \
--platform linux/amd64   \
--rm     \
--volume $PWD:/app    \
--volume $HOME/.deno:/deno-dir    \
--workdir /app     \
deno deno run --allow-read --allow-ffi --unstable examples/parse-xcb.ts

报错信息

运行后抛出类型错误:

error: Uncaught (in promise) TypeError: Invalid FFI pointer type, expected null, or External
this.#ptr = lib.symbols.xmlCreatePushParserCtxt(
^
at new PushParseCtxt (https://deno.land/x/libxml2_xpath@v0.0.3/mod.ts:89:29)
at parseDocument (https://deno.land/x/libxml2_xpath@v0.0.3/mod.ts:442:17)
at eventLoopTick (ext:core/01_core.js:183:11)
at async file:///app/examples/parse-xcb.ts:9:15

使用的Dockerfile

FROM --platform=linux/amd64 denoland/deno:1.37.0

RUN DEBIAN_FRONTEND=noninteractive  \
apt-get update                      \
&& apt-get install -qy              \
libxml2-utils                       \
libxml2-dev                         \
libxml2

解决方法

1. 手动指定libxml2库路径

错误本质是libxml2_xpath没能正确定位到系统中的libxml2动态链接库。先进入Docker容器执行find / -name libxml2.so找到库的实际路径(通常为/usr/lib/x86_64-linux-gnu/libxml2.so),然后在代码中显式指定该路径加载库:

import { createLibXml2 } from "https://deno.land/x/libxml2_xpath@v0.0.3/mod.ts";
// 替换为实际找到的libxml2.so路径
const libxml2 = createLibXml2("/usr/lib/x86_64-linux-gnu/libxml2.so");
// 后续使用libxml2进行解析操作

2. 升级Deno与库版本

Deno 1.37.0的FFI接口可能和libxml2_xpath@v0.0.3存在兼容性问题,建议将Deno升级到1.40及以上版本,同时更新libxml2_xpath到最新发布版本。

3. 调整Dockerfile确保库链接正常

在Dockerfile中添加ldconfig命令,强制系统更新动态链接库缓存,确保能找到libxml2:

FROM --platform=linux/amd64 denoland/deno:1.37.0

RUN DEBIAN_FRONTEND=noninteractive  \
apt-get update                      \
&& apt-get install -qy              \
libxml2-utils                       \
libxml2-dev                         \
libxml2 \
&& ldconfig

内容的提问来源于stack exchange,提问作者pamoller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 11:37:54