← 返回文档

常见问题

本地开发、部署、建站与模块的高频疑问

本地开发

为什么 localhost:7300127.0.0.1:7300 看到的不一样?

它们是两个入口。localhost 是产品站(默认租户),127.0.0.1 是平台控制台。这是 按 Host 分流的结果,详见 Host 分流机制

访问 /platform 被重定向了?

在产品站 Host 上访问 /platform 会被送去 PLATFORM_URL。控制台只在它自己的 Host 上 开放。

租户子域本地怎么测?

TENANT_BASE_DOMAIN=localhost,然后直接访问 http://{slug}.localhost:7300。 浏览器原生把 *.localhost 解析到回环地址,不用改 hosts 文件。

新模块的页面 404?

路由必须挂在 /app/<模块> 下。挂在顶层(如 /site)时,在租户 Host 上会被 CMS 接管——/ 归租户站点,应用区一律走 /app/*

数据库与迁移

migrate dev 生成了意料之外的 DROP?

它是拿开发库和 schema 比对生成迁移的,开发库的历史痕迹(旧分支、别的项目残留的 表)会变成 DROP。改用离线 diff:把迁移历史重放到一个空的影子库,再和 schema 比, 与开发库现状无关。

能直接删开发库里的表来消除漂移吗?

不能。 删表不改迁移历史,等于制造反向漂移,Prisma 会从「多生成一条 drop」升级成 「必须 reset 整个 schema」。唯一正确的路是让迁移历史与 schema 一致。

外部模块的迁移在哪?

外部模块只声明 prisma/schema.prisma,迁移统一由 apps/server 管理。一个数据库只有 一条迁移历史——模块的 schema 被符号链接进主 schema,迁移由消费方生成。

生产要手动跑迁移吗?

Docker 部署不用,docker/entrypoint.sh 会自动 migrate deploy。非容器部署时手工跑 一次 pnpm --filter server exec prisma migrate deploy

建站

新站点为什么只有一个首页?

初始化只建一张空白首页,这是刻意的。要定价 / 关于 / 联系页,在 CMS 里自己加; 要产品首页,在站点设置里选模块贡献的版式。

页头怎么没有「免费开始」按钮?

默认不预置页头按钮——它以前指向会员注册,而会员默认未开通,点进去是 403。需要 CTA 就在页头设置里自己加一条。

/docs 能拿来当页面路径吗?

不能,它是文档库的专属路径。语言代码(enzh-CN)同理。

改完页面访客看不到变化?

编辑器改的是草稿,要在列表里点「发布」才上线。页面和文档都是这个口径。

文档库

怎么写英文版的文档?

新建文档时选语言,同一路径每种语言各存一行。前台按访客语言取对应版本,主语言不带 URL 前缀,其余走 /{locale}/docs。详见 文档库管理

建好之后能改语言吗?

不能。改语言等于把这一行搬进另一组译文,而那边可能已经有同路径的文档。要换语言就 在目标语言里新建一篇。

导出全部会不会重名?

不会。主语言导出成 faq.md,其余语言导出成 faq.en.md,导入时能认回去。

部署

单租户怎么配?

SINGLE_TENANT=true:隐藏控制台、禁止新建租户、所有请求归默认租户。提交前跑 pnpm check:prod-app-env

默认租户的站点内容需要手工初始化吗?

不需要。服务端启动时自动铺一套已发布的起步站点与文档库,幂等,而且按语言分别判断—— 不会覆盖你改过的内容。

模块

check:modules 报错怎么办?

它校验注册表、租户列、开关、权限、排序、外壳、nav 与 import 边界。按报错逐项修 ——通常是注册表漏登记、模块顺序不对,或 import 了不该 import 的包。

外部模块能依赖别的模块吗?

不能直接 import。跨模块走扩展点(事件、Provider、Slot)。requires 只声明依赖 关系与加载顺序,不给代码级访问。