Skip to content

packages/runner/vite.config.ts 的 @object-ui/data-objectql 别名指向不存在的包目录(全仓唯一引用) #3593

Description

@yinlianghui

越界发现,记录于 #3575(补全 runner vite 别名表的传递闭包)期间。未在该 PR 中顺手修改 —— #3575 的裁定是「把闭包补全」,这是同一张表的另一个方向的破缺(表里有条目、对应的包却没了),属于独立缺陷,交 PM 分诊。

现象

packages/runner/vite.config.ts 里有这一条别名:

"@object-ui/data-objectql": path.resolve(__dirname,"../../packages/data-objectql/src"),

packages/data-objectql/这个目录不存在:

$ ls -d packages/data-objectql
ls: cannot access 'packages/data-objectql': No such file or directory

而且 @object-ui/data-objectql 这个 specifier 在整个仓库里只出现这一次,就是上面这行别名本身:

$ grep -rn "data-objectql" --include=*.ts --include=*.tsx --include=*.json --include=*.mdx --include=*.md . | grep -v node_modules
./packages/runner/vite.config.ts:66: "@object-ui/data-objectql": path.resolve(__dirname, "../../packages/data-objectql/src"),

packages/runner/package.jsondependencies 里也没有它(只有 components / core / plugin-charts / plugin-kanban / react / types 六个)。

严重度:休眠,今天没有用户会踩到

判为 observation-class 并打 finding,理由是这条别名当前完全不可达:

  • 没有任何源码 import @object-ui/data-objectql,所以别名永远不会被匹配;
  • Vite 的 resolve.alias 不会校验 replacement 路径是否存在,不匹配就不解析,因此既不报错也不影响 dev/build。

实测:补全闭包后 runner 的 dev server 从 src/main.tsx 爬完整模块图 2381 个模块、0 个非 200,这条死别名全程没有参与。

但它有一个实际代价

#3575 在别名表旁留了一行「如何重新推导闭包」的命令,该命令要 grep -r 遍历表里每个包的 src。这条指向空目录的条目会让它每次都打印一行:

grep: packages/data-objectql/src: No such file or directory

#3575 里已用 2>/dev/null 把它压掉并在注释里点名了本单,但那是绕过而不是修复 —— 一个长期存在的假条目会让「表 = 闭包」这条不变量看起来是软的,下一个人加条目时也就更容易照抄一个不核对的写法。

建议方向(不预设结论)

  1. 直接删掉这一行(若 data-objectql 这个包确已下线/改名 —— 注意现存的是 @object-ui/data-objectstack,疑似为其后继)。
  2. 若该包只是暂时不在树内、计划回归,则保留但补一行注释说明,并把 packages/runner 按 runner.mdx 的「From Source」步骤起不来:vite 别名表漏了 5 个源码实际 import 的工作区包 #3575 那条推导命令里的 2>/dev/null 换成显式的「目录存在性」过滤。

需要维护者确认 data-objectql 是被 data-objectstack 取代了还是别的情况,故本单不预设。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions