Skip to content

scripts/start-app.mjs 是死入口:没有 start:app 脚本、默认目标 examples/dashboard 不存在、没有任何 example 是 app-data 形状 #3579

Description

@yinlianghui

越界发现,记录于 #3537(给 runner 补 api 查询参数文档)期间。finding 不排队 —— 今天没有任何文档指向它,读者踩不到;它只是躺在仓库里的一段不能用的工具代码。之所以值得记一笔:它是唯一一段会去填 packages/runner/src/app-data/ 的代码,而那个目录正是 runner 缺省加载路径的元数据来源。写 #3537 的文档时特意没有把它写进去(否则就是又教一遍不存在的能力,#3533 的形态)。

事实(均对 origin/main 复核)

scripts/start-app.mjs 的用途是:把某个应用目录软链到 packages/runner/src/app-data,再起 runner 的 dev server。

  1. 它自称的入口不存在。 文件第 12 行注释写 // 1. Parse arguments (pnpm start:app <path>),但根 package.jsonscripts 里没有 start:app(也没有任何脚本引用 start-app.mjs)。只能 node scripts/start-app.mjs DIR 直接跑。
  2. 默认目标不存在。const appPathRel = args[0] || 'examples/dashboard',而 examples/ 下只有 byo-backend-consoleconsole-starterhello-worldschema-catalogREADME.md。不传参跑 → ❌ App directory not found
  3. 没有一个 example 能当参数。 该脚本期望的目录形状是 app.json + pages/**/*.json(packages/runner/src/lib/MetadataLoader.ts:21-23 的三个 glob)。四个 example 都不是这个形状:hello-worldApp.tsx + schema.json,其余三个是 Vite 应用(src/ + index.html + package.json)。也就是说仓库里没有任何可用于该脚本的输入。
  4. 顺带:MetadataLoader.ts:18 的注释指向另一个不存在的脚本。* Used during local development via 'pnpm dev:crm' —— 本仓没有 dev:crm(它是 objectstack 仓的脚本,见该仓 AGENTS.md 的 PORT=3000 pnpm dev:crm)。

可选方向(不预设结论)

  1. 删掉 scripts/start-app.mjs,并修掉 MetadataLoader.ts:18 的注释 —— 若「本地跑一个 app-data」不是要保留的工作流。
  2. 补活它:加 start:app 脚本、把默认值改成一个真实存在的目录、并在 examples/ 下放一个 app.json + pages/index.json 形状的最小示例应用(这同时也会让 runner 的缺省加载模式第一次在仓库里可跑,并可作为 docs(runner): runner 真正的 API 基址配置面是 api 查询参数,但全仓文档零处记载 #3537 新增文档的实例)。
  3. 什么都不改,只记录在案。

方向 2 顺带解决的是:今天 pnpm dev 起来的 runner 缺省模式加载不到任何东西(src/app-data/ gitignore 且为空,三个 glob 编译成 {} —— 实测),页面只有内置的 No index page found.


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