一句话说明
一个只有 objectstack.config.ts(defineStack + objects)、没有 dist/objectstack.json 的工程,objectstack serve 启动失败,报 ✗ Service 'manifest' is async - use await。这是 #3886 做 stashed-baseline 对照实验时发现的预存问题(基线与改动后逐字节同样失败),按 PD#10 记录。
复现
mkdir demo && cd demo # 需在 @objectstack/spec 可解析的目录下
cat > objectstack.config.ts <<'TS'
import { defineStack } from '@objectstack/spec';
export default defineStack({
manifest: { id: 'com.test.cfgload', name: 'CfgLoad', type: 'app', version: '1.0.0' },
objects: [{ name: 'cfg_note', label: 'Note', fields: { title: { type: 'text' } } }],
});
TS
OS_DATABASE_URL=memory://x objectstack serve -p 38746
输出:
[StandaloneStack] artifact read FAILED: path='.../dist/objectstack.json' error=ENOENT ...
✗ Service 'manifest' is async - use await
事实核实
报错文案指向 kernel 的 service factory 异步检测(Service 'X' is async - use await),大概率是某处对 getService('manifest') 的同步调用在此形态下撞上了 async factory —— 没有继续深挖,避免在 #3886 里扩 scope。
影响
新手最自然的动作之一(「写个 config 直接 serve」)在无 artifact 时启动失败,且报错与真实原因(缺 artifact?manifest 服务时序?)相距很远。
关联
一句话说明
一个只有
objectstack.config.ts(defineStack+ objects)、没有dist/objectstack.json的工程,objectstack serve启动失败,报✗ Service 'manifest' is async - use await。这是 #3886 做 stashed-baseline 对照实验时发现的预存问题(基线与改动后逐字节同样失败),按 PD#10 记录。复现
输出:
事实核实
shouldBootWithLibrary(config)→createStandaloneStack(baredefineStack的默认路径),artifact 缺失只是 warning,boot 继续,随后死在manifestservice 的异步解析上。git stash掉全部改动、重建后同样失败 —— 与 datasource 声明化(feat(runtime): the standalonedefaultdatasource is a declaration, connected through the one datasource path (#3826) #3869/feat(cli): the serve storage fallback declares the default datasource instead of constructing a driver (#3826) #3886)无关。objectstack build再 serve(有 artifact)可正常启动 —— 所以受影响的是「没跑过 build 直接 serve/dev」的首次体验路径,create-objectstackquickstart 若先 build 则不受影响。报错文案指向 kernel 的 service factory 异步检测(
Service 'X' is async - use await),大概率是某处对getService('manifest')的同步调用在此形态下撞上了 async factory —— 没有继续深挖,避免在 #3886 里扩 scope。影响
新手最自然的动作之一(「写个 config 直接 serve」)在无 artifact 时启动失败,且报错与真实原因(缺 artifact?manifest 服务时序?)相距很远。
关联