inspector: build.mjs resolves paths with URL#pathname, fails ENOENT (F:\\F:\\...) and aborts bun run build on Windows
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 88/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- javascript, node.js, typescript
- Domain
- build-system, tooling
Research direction
Read packages/inspector/build.mjs and compare its path helper with the repository examples named in the issue. Reproduce with bun run build on Windows, then confirm the package build succeeds after the helper uses fileURLToPath. Done means the doubled drive prefix is gone and the root build can continue past the inspector package.
Written by the indexing model from the issue text.
Description
Summary
bun run build fails on Windows in the new @hyperframes/inspector package:
@hyperframes/inspector build $ node build.mjs
Error: ENOENT: no such file or directory, open
'F:\F:\PINOKIO\Run\PINOKIO\api\HyperFrames-Studio.git\app\packages\inspector\package.json'
errno: -4058, code: 'ENOENT', syscall: 'open'
Exited with code 1
error: script "build" exited with code 1
Note the doubled drive prefix F:\F:\.
Root cause
packages/inspector/build.mjs:8:
const at = (path) => new URL(path, import.meta.url).pathname;
On Windows, URL#pathname for a file:///F:/... URL is /F:/... — a POSIX-style, drive-letter-in-path string. fs.readFileSync("/F:/...") resolves against the current drive (F:), producing F:\F:\..., which does not exist.
Everywhere else in the repo this is done correctly with fileURLToPath() (e.g. packages/producer/scripts/test-classification.mjs, packages/cli/scripts/build-copy.mjs, scripts/rewrite-relative-import-extensions.mjs), which yields F:\... as expected.
at() is used for readFileSync (line 9), all esbuild entryPoints/outfiles (lines 19–44), the tsc -p argument (line 49), copyFileSync (line 51) and rewriteRelativeImportExtensions (line 52) — so the whole script dies on the first read.
Impact
The root build script is an && chain:
... && bun run --filter '@hyperframes/{engine,producer,player,studio,shader-transitions,aws-lambda,gcp-cloud-run,sdk,inspector}' build && bun run --filter '@hyperframes/cli' build && ...
One failing member aborts the chain, so @hyperframes/cli and @hyperframes/sdk-playground never build either — bun run build is simply broken on Windows for any fresh clone.
Repro
Windows + Node:
git clone https://github.com/heygen-com/hyperframes.git
cd hyperframes
bun install
bun run build
(The failure is deterministic — no race, no network involved.)
Suggested fix
import { fileURLToPath } from "node:url";
const at = (path) => fileURLToPath(new URL(path, import.meta.url));
This matches the convention used by the rest of the repo and is a no-op on POSIX.
Environment
- OS: Windows 10/11, repo at
origin/main@b46ebedea - Node v24.18.0, bun via
bun run build - Discovered while a launcher script (
git clone+bun install+bun run build) reproduced it end to end
- Dominant language
- TypeScript
- Stars
- 54.1k
- Forks
- 4.9k
- Avg merge
- 10h 29m
- Merged PRs (30d)
- 649
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from heygen-com/hyperframes
-
Player: speed button's accessible name doesn't include its visible textPossibly taken @Dante-dan claimed this 2 days ago. Opentriage/ready
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
heygen-com/hyperframes#6021 · 1 comment ·
Maintainers usually reply within 1 day
-
product-launch-video: assemble-index.mjs is not idempotent — a second run drops every approved frame videoPossibly taken @Dante-dan claimed this 7 days ago. Opentriage/ready
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
heygen-com/hyperframes#5733 ·
Maintainers usually reply within 1 day
-
gsap_tween_tail counts GSAP's force3D and autoRound flags as propertiesPossibly taken @rudycelekli claimed this 7 days ago. Openbug triage/ready
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
heygen-com/hyperframes#5683 ·
Maintainers usually reply within 1 day
-
Timeline: show a clip's full name when its label is cut offPossibly taken @DanielMcSheehy claimed this 5 days ago. Opendesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
heygen-com/hyperframes#5582 · 2 comments ·
Maintainers usually reply within 1 day
-
Studio: press ? to open the keyboard shortcuts panelPossibly taken @B-Payal claimed this 10 days ago. Opendesktop-candidate difficulty/easy enhancement good first issue help wanted triage/ready
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
heygen-com/hyperframes#5580 · 1 comment ·
Maintainers usually reply within 1 day
All issues in heygen-com/hyperframes
Similar issues
-
area: image-engine bug priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
snapotter-hq/SnapOtter#3885 ·
Maintainers usually reply within 1 day
-
Mend: dependency security vulnerability
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 3 days
-
pending triage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
bug P3 UI/UX
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
openclaw/openclaw#182077 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day