render: --variables-file (and --variables <path>) fails with "io.readFile is not a function" since 0.8.212
维护者通常 1 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 76/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- node.js, typescript
- 领域
- cli
调研方向
追踪 render --variables-file、--variables <path> 和 --variables -,直到 resolveVariablesArg 和 parseVariablesArg;Issue 指出了未定义的 I/O 回调如何覆盖 readJsonFlagText 中的默认值。阅读相关的 CLI 实现及其测试,然后针对文件和 stdin 输入运行专项测试。当这些输入能够成功解析,且 inline JSON 和 --batch 的行为仍然正常时,工作即告完成。
由索引模型根据 Issue 内容生成。
描述
Describe the bug
hyperframes render --variables-file <file> fails before rendering on every version from 0.8.212 to 0.8.221 (latest at the time of writing). The same failure hits --variables <path> and --variables - (stdin). Inline JSON (--variables '{"title":"x"}') and --batch <file> still work.
Minimal reproduction
Any project with data-composition-variables:
echo '{}' > /tmp/vars.json
npx -y [email protected] render . --variables-file /tmp/vars.json -o /tmp/out.mp4
✗ Could not read the variables JSON
/tmp/vars.json: io.readFile is not a function
| Version | --variables-file |
|---|---|
| 0.8.210, 0.8.211 | reads the file, render proceeds |
| 0.8.212, 0.8.213, 0.8.216, 0.8.221 | io.readFile is not a function |
Linux (WSL2 Ubuntu), Node 24.19.0.
Cause (from the published dist of 0.8.221)
resolveVariablesArg(inline, filePath) calls parseVariablesArg(inline, filePath) with no readFile / readStdin, so it passes { readFile: undefined, readStdin: undefined } to readJsonFlagText:
function readJsonFlagText(value, partialIo = {}) {
const io = { ...defaultIO, ...partialIo }; // undefined overrides the defaults
...
return trimmed === "-" ? io.readStdin() : io.readFile(value);
An object spread copies keys whose value is undefined, so io.readFile is undefined.
Steps to reproduce
echo '{}' > /tmp/vars.json
npx -y [email protected] render . --variables-file /tmp/vars.json -o /tmp/out.mp4
Expected behavior
A rendered mp4 using the variables file is created
Actual behavior
◆ Rendering variables-fixture → C:\node_projects\hftemptest\out.mp4
30fps · standard · auto workers (16 cores detected)
GPU: browser GPU (auto-detect)
✗ Could not read the variables JSON
vars.json: io.readFile is not a function
Environment
The failed checks (unzip, FFmpeg, optional tools) are unrelated: the error is thrown while the flag is parsed, before any browser or encoder is touched.
hyperframes doctor
✓ Version 0.8.221 (latest)
✓ Node.js v24.19.0 (linux x64)
✓ CPU 16 cores · Intel(R) Core(TM) Ultra 7 265H
✓ Memory 15.6 GB total · 6.0 GB available
✓ Disk 925.5 GB free
✓ Frames cache /tmp/hyperframes-extract-cache-1000 · 925.5 GB free at /tmp · default
✗ Archive extractor Not found
✓ Settings lock Not locked
✓ /dev/shm 7995 MB
✓ Environment WSL · non-TTY
✗ whisper-cpp Not found (optional — needed for transcription)
✗ TTS (Kokoro) Not installed (optional — local voice fallback)
✗ BGM (MusicGen) Not installed (optional — local music fallback)
✓ onnxruntime-node Not installed (installs on first use)
✓ @google/genai Not installed (installs on first use)
✗ FFmpeg FFmpeg is required to encode video.
✗ FFprobe FFprobe is required to probe media assets.
✓ Chrome cache: ~/.cache/hyperframes/chrome/chrome-headless-shell/linux-152.0.7977.30/...
✓ Docker Docker version 29.6.2, build dfc4efb
✗ Docker running Not running
Additional context
No response
- 主要语言
- TypeScript
- 星标
- 54.1k
- 派生
- 4.9k
- 平均合并
- 8 小时 26 分钟
- 30 天内合并 PR
- 790
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
heygen-com/hyperframes 的其他 Issue
-
bug triage/ready
难度 2/5 1-3 小时 新手友好度 82/100
heygen-com/hyperframes#6849 · 1 条评论 ·
维护者通常 1 天内回复
-
Segmented capture always fails with `--format mov`可能已有人在做 @DaKaufeeBoii 于 1 天前认领。 未关闭bug difficulty/easy triage/ready
难度 2/5 1-3 小时 新手友好度 78/100
heygen-com/hyperframes#6481 · 2 条评论 ·
维护者通常 1 天内回复
-
Timeline: show a clip's full name when its label is cut off可能已有人在做 @DanielMcSheehy 于 13 天前认领。 未关闭desktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
难度 2/5 1-3 小时 新手友好度 85/100
heygen-com/hyperframes#5582 · 2 条评论 ·
维护者通常 1 天内回复
-
Studio: press ? to open the keyboard shortcuts panel可能已有人在做 @B-Payal 于 18 天前认领。 未关闭desktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
难度 2/5 1-3 小时 新手友好度 82/100
heygen-com/hyperframes#5580 · 1 条评论 ·
维护者通常 1 天内回复
-
lint: add tests for three caption rules that have none可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭difficulty/easy enhancement help wanted triage/ready
难度 2/5 1-3 小时 新手友好度 85/100
heygen-com/hyperframes#5388 · 1 条评论 ·
维护者通常 1 天内回复
查看 heygen-com/hyperframes 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
enhancement tech debt
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
privatenumber/tsx#866 ·
-
难度 2/5 1-3 小时 新手友好度 62/100
danielmiessler/LifeOS#2533 ·
维护者通常 9 天内回复
-
auto:producer auto:uiux
难度 2/5 1-3 小时 新手友好度 78/100
fritzprix/libr-agent#2447 ·
维护者通常 1 天内回复