Replies: 1 comment
|
查了 Node.js 官方文档,这个其实跟 Node 版本直接相关,不是与 Node 版本无关的明显 bug。 createZstdDecompress、zstdCompress、zstdDecompressSync 这些函数,是在 Node.js v22.15.0 才加进 node:zlib 的,官方文档写得很清楚(我直接查的是 nodejs/node 仓库 v22.x 分支的 doc/api/zlib.md 原始文件,不是猜的): zlib.createZstdDecompress([options]) 这是在 22.x 这条线上通过后向移植(backport)加进来的,不是只有 23.x/24.x 才有。 deepseek-harness 自己的根 package.json 里 engines 字段写的是: "engines": { "node": "^22.19.0 || >=24.0.0" } 22.19.0 本身就已经大于 22.15.0,说明这个版本要求就是照着 Zstd 支持特意定的,不是随便写的。 你说你试过 v22.19.0 也报同样的错,这个我解释不了,按官方文档这个版本应该是有这几个函数的。比较可能的情况是:npx/dsh 实际调用的 node 二进制,和你手动 node -v 看到的不是同一个(比如系统里同时装了 nvm 管理的 node 和 Homebrew 装的 node,PATH 顺序不对,或者某个终端窗口没有正确切换版本)。建议在报错的那个终端里直接跑一下 node -e "console.log(process.version)",或者 which node / node -p "process.execPath",确认真正在执行 npx 命令的是哪一个 node,而不是只看另开一个终端里 node -v 的结果。 如果确认下来真的是 22.19.0 或更高版本、且是同一个 node 二进制,还是复现这个错,那才是真正值得深挖的异常情况,到时候带上 process.version 和 process.execPath 的实际输出会很有说服力。 |
Uh oh!
There was an error while loading. Please reload this page.
问题描述
在执行
dsh web命令时(无论是通过npx还是全局安装),进程因SyntaxError而失败,错误信息显示node:zlib模块未导出createZstdDecompress、zstdCompress、zstdDecompressSync等函数。这表明@deepseek-ai/dsh-session-persistence-jsonl包试图使用 Node.js 内置zlib模块中并不存在的 Zstandard(Zstd)压缩函数。环境信息
@deepseek-ai/dsh@0.1.1-rc.2(截至反馈时发布的最新版本)复现步骤
npx @deepseek-ai/dsh web(或全局安装后运行dsh web)。zstdCompress、zstdDecompressSync和PublicZstdFrameDecoder上。)完整错误片段:
已尝试的临时解决方法
deepseek-harness)克隆并尝试本地构建:zstd-private-decoder.ts、zstd-public-decoder.ts和zstd.ts,将node:zlib导入替换为虚拟实现,以在运行时绕过该错误。@deepseek-ai/dsh-experimental-webworker)和构建文档不完整而失败。dsh-session-persistence-jsonl插件后,CLI 可以启动,但随后其他插件(如typert-loader)因缺少编译后的包(lib/typert.host.js)而失败。预期行为
dsh web应正常启动本地 Web 界面,而不抛出模块导入错误。问题分析
node:zlib模块不支持 Zstandard(Zstd)压缩——它仅提供gzip、deflate、brotli等。@deepseek-ai/dsh-session-persistence-jsonl中的代码错误地假设 Zstd 函数可从node:zlib获取,这是一个明显的 Bug,影响所有用户,与 Node.js 版本无关。此外,源码仓库的构建流程复杂,且缺乏清晰的构建与运行指南,使得用户难以在本地绕过该问题。
建议
node:zlib中 Zstd 压缩/解压功能的依赖。zstd或zstd-codec),并确保已安装。dsh web基本功能可用。感谢您维护此工具,期待修复。
All reactions