fix(dev): proxy content registry to CLI server
Inline spark tables (role=spark-table) live in the content registry, but the rsbuild dev proxy forwarded only /__COMPLETIONS.json and /__CONTENT_INDEX.json. The registry fetch fell back to the SPA index.html, so /roll resolved the inline CSV as HTML and csv-parse failed with an invalid opening quote. Load the registry before publishing the loaded completions state so a roll cannot fire while inline content is still unresolvable.
This commit is contained in:
+1
-1
@@ -253,7 +253,7 @@ npm test -- --watch
|
|||||||
- Web 前端:rsbuild 开发服务器,端口 **5173**
|
- Web 前端:rsbuild 开发服务器,端口 **5173**
|
||||||
- CLI 内容服务器:`tttk serve`,端口 **3000**(内容 API + Journal)
|
- CLI 内容服务器:`tttk serve`,端口 **3000**(内容 API + Journal)
|
||||||
|
|
||||||
rsbuild 会把 `/__CONTENT_INDEX.json`、`/__COMPLETIONS.json`、`/content`、`/.ttrpg` 代理到 CLI 的
|
rsbuild 会把 `/__CONTENT_INDEX.json`、`/__COMPLETIONS.json`、`/__CONTENT_REGISTRY.json`、`/content`、`/.ttrpg` 代理到 CLI 的
|
||||||
3000 端口,因此必须先启动 CLI,否则前端拿不到内容。
|
3000 端口,因此必须先启动 CLI,否则前端拿不到内容。
|
||||||
|
|
||||||
### Web 开发
|
### Web 开发
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ export default defineConfig({
|
|||||||
// Proxy content API requests to the CLI dev server (npm run tttk)
|
// Proxy content API requests to the CLI dev server (npm run tttk)
|
||||||
"/__CONTENT_INDEX.json": "http://localhost:3000",
|
"/__CONTENT_INDEX.json": "http://localhost:3000",
|
||||||
"/__COMPLETIONS.json": "http://localhost:3000",
|
"/__COMPLETIONS.json": "http://localhost:3000",
|
||||||
|
"/__CONTENT_REGISTRY.json": "http://localhost:3000",
|
||||||
"/content": "http://localhost:3000",
|
"/content": "http://localhost:3000",
|
||||||
"/.ttrpg": "http://localhost:3000",
|
"/.ttrpg": "http://localhost:3000",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -138,8 +138,11 @@ const _initPromise: Promise<void> = (async () => {
|
|||||||
// 1. Try server first (CLI mode)
|
// 1. Try server first (CLI mode)
|
||||||
const serverData = await tryServer();
|
const serverData = await tryServer();
|
||||||
if (serverData) {
|
if (serverData) {
|
||||||
setCompletionsState({ status: "loaded", data: serverData });
|
// Load the registry before publishing the loaded state: dispatching a
|
||||||
|
// command only becomes possible once completions are "loaded", and inline
|
||||||
|
// spark-table CSVs are resolved through this registry at roll time.
|
||||||
await tryServerRegistry();
|
await tryServerRegistry();
|
||||||
|
setCompletionsState({ status: "loaded", data: serverData });
|
||||||
try {
|
try {
|
||||||
initReactivity({
|
initReactivity({
|
||||||
declarations: serverData.declarations,
|
declarations: serverData.declarations,
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* Dev 工作流:运行 CLI 服务器并在 rsbuild 配置中设置代理
|
* Dev 工作流:运行 CLI 服务器并在 rsbuild 配置中设置代理
|
||||||
* > npm run tttk serve ./content
|
* > npm run tttk serve ./content
|
||||||
* > npm run dev
|
* > npm run dev
|
||||||
* rsbuild 会将 /__CONTENT_INDEX.json、/__COMPLETIONS.json、/content/ 代理到 CLI 服务器
|
* rsbuild 会将 /__CONTENT_INDEX.json、/__COMPLETIONS.json、/__CONTENT_REGISTRY.json、/content/ 代理到 CLI 服务器
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|||||||
Reference in New Issue
Block a user