create-zleap-app 0.10.0 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +24 -2
- package/lib/scaffold.js +10 -0
- package/package.json +4 -4
- package/skills/zleap-cloud-app/SKILL.md +6 -6
- package/skills/zleap-cloud-app/references/app-runtime.md +82 -75
- package/skills/zleap-cloud-app/references/cloud-functions.md +230 -43
- package/skills/zleap-cloud-app/references/console-database.md +8 -0
- package/skills/zleap-cloud-app/references/console-members.md +44 -30
- package/skills/zleap-cloud-app/references/limits.md +57 -56
- package/skills/zleap-cloud-app/references/manifest.md +36 -35
- package/skills/zleap-cloud-app/references/permissions.md +40 -47
- package/skills/zleap-cloud-app/references/sdk-database-files.md +116 -49
- package/skills/zleap-cloud-app/references/status-codes.md +126 -94
- package/skills/zleap-cloud-app/references/triggers.md +24 -24
- package/skills/zleap-cloud-app-release/SKILL.md +5 -2
- package/skills/zleap-cloud-app-release/references/app-center-install.md +64 -52
- package/skills/zleap-cloud-app-release/references/app-center-publish.md +118 -49
- package/skills/zleap-cloud-app-release/references/console-functions.md +12 -4
- package/skills/zleap-cloud-app-release/references/console-legacy-release.md +5 -2
- package/skills/zleap-cloud-app-release/references/console-members.md +44 -30
- package/skills/zleap-cloud-app-release/references/console-release.md +39 -28
- package/skills/zleap-cloud-app-release/references/console-workspace.md +32 -16
- package/skills/zleap-cloud-app-release/references/dev-to-production.md +330 -113
- package/skills/zleap-cloud-app-release/references/permissions.md +40 -47
- package/skills/zleap-cloud-app-release/references/status-codes.md +126 -94
- package/templates/react-ts/AGENTS.md +2 -2
- package/templates/react-ts/README.md +1 -1
- package/templates/react-ts/package.json +3 -0
- package/templates/react-ts/scripts/zleap.mjs +25 -3
- package/templates/react-ts/src/cloud/client.ts +2 -2
|
@@ -7,47 +7,259 @@
|
|
|
7
7
|
|
|
8
8
|
如果你只想先在自己桌面上跑通一个读写数据库的应用,先看 快速开始(文档站 /guide/quickstart)。
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## 先分清两种应用
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
平台现在**推荐、并且新建的都是 `appid` 应用**:在云开发控制台「创建应用」得到 `zl` + 16 位十六进制的应用标识。
|
|
13
|
+
早期还有一批用 `app_key` 命名空间(如 `com.example.todo`)创建的旧应用,它们仍能使用,但上线方式不同。
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
| 对比项 | 平台 `appid` 应用(推荐) | 旧 `app_key` 应用 |
|
|
16
|
+
| ------------ | ---------------------------------------------------------- | ----------------------------------------------------- |
|
|
17
|
+
| Manifest | 写 `"appid": "zl…"` | 写 `"app_key": "com.example.todo"` |
|
|
18
|
+
| 每次上传 | **开发版本**,可见性 `members`(只有应用成员能看到、安装) | **private**(只有上传者本人) |
|
|
19
|
+
| 上线方式 | 控制台「版本管理」→「发布为线上版本」 | 应用中心「发布到企业目录」/ `market-publish` |
|
|
20
|
+
| 生产环境 | 首次「发布为线上版本」时**自动准备** | 手动「激活到生产」,或 `prepare`(仅本人 private 包) |
|
|
21
|
+
| 生产准备命令 | 不需要:首次「发布为线上版本」自动准备;`prepare` 只准备开发环境 | `zleap-app prepare` |
|
|
22
|
+
| 读哪一节 | 下面的[推荐路线](#推荐路线-appid-应用从开发到上线) | 后半部分[旧应用的完整流程](#legacy-flow) |
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
> **先确认你的应用是哪种**(提示)
|
|
25
|
+
>
|
|
26
|
+
> 打开项目的 `manifest.json`:有 `appid` 字段(或值是 `zl` 开头)就是平台应用;有 `app_key` 字段(值带点,如 `com.example.todo`)就是旧应用。
|
|
27
|
+
> 不确定时,在控制台应用切换器里能看到这个应用,并且「发布」组里是「版本管理」,就是 `appid` 应用。
|
|
28
|
+
|
|
29
|
+
## 推荐路线:appid 应用从开发到上线
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
创建应用(拿 appid)
|
|
33
|
+
↓
|
|
34
|
+
脚手架新建项目 / 已有项目接入
|
|
35
|
+
↓
|
|
36
|
+
npm run login → npm run deploy(构建 → 检查 → 上传开发版本 → 装到自己桌面)
|
|
37
|
+
↓ ↘ 声明了集合的应用:安装时自动开通开发环境、数据库、集合
|
|
38
|
+
打开应用调试(运行体检、控制台日志、npm run logs)
|
|
39
|
+
↓
|
|
40
|
+
有云函数?→ 控制台「版本管理」下方「开发环境:云函数激活」签名并激活
|
|
41
|
+
→ 应用窗口「权限」里允许后台能力
|
|
42
|
+
↓
|
|
43
|
+
发布为线上版本(首次带云资源时自动准备生产)
|
|
44
|
+
↓
|
|
45
|
+
同事在应用中心安装;下次打开自动更新,非成员 24 小时后强制更新
|
|
46
|
+
↓
|
|
47
|
+
迭代:deploy → release;回退:把旧版本再 release 一次
|
|
48
|
+
↓
|
|
49
|
+
一起开发:控制台「成员」里添加开发者
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 第 1 步:创建应用,拿到 `appid`
|
|
53
|
+
|
|
54
|
+
**做什么**:在云开发控制台新建一个应用,拿到平台生成的 `appid`(应用标识,`zl` + 16 位小写十六进制)。
|
|
55
|
+
|
|
56
|
+
**在哪做**:打开启动台 →「更多工具」→「云开发控制台」(也可以在启动台直接搜索「云开发」)。
|
|
57
|
+
云开发控制台是**系统内置应用**,不需要去应用中心安装。在左上角应用切换器里点「**创建应用**」,填应用名称(说明可选),点「创建」。
|
|
58
|
+
|
|
59
|
+
**做完的标志**:控制台概览显示这个应用的 `appid`,并提示「应用已创建,还没有上传过代码。按下面三步把第一个版本传上来。」
|
|
60
|
+
你自动成为应用**管理员**;要加同事一起开发,去「成员」页(见第 9 步)。
|
|
61
|
+
|
|
62
|
+
(截图:新建应用、还没上传时的控制台概览,见文档站)
|
|
63
|
+
|
|
64
|
+
### 第 2 步:生成项目,或接入已有项目
|
|
65
|
+
|
|
66
|
+
**做什么**:准备一个能部署到 zleapOS 的项目,并让 `manifest.json` 指向第 1 步的 `appid`。
|
|
67
|
+
|
|
68
|
+
**在哪做**:
|
|
69
|
+
|
|
70
|
+
- **新项目**:用脚手架生成 React + TypeScript + Vite 项目:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm create zleap-app@latest my-app -- --appid <appid> --name "我的应用"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
生成的项目自带 Cloud SDK、`zleap-app` CLI、部署脚本和 AI 编程工具 skills。详细选项见 npm 包与工具链(文档站 /guide/npm-packages#脚手架-create-zleap-app)。
|
|
77
|
+
需要 Node.js 20.19.x 或 22.12+,安装步骤见 环境准备与安装(文档站 /guide/install)。
|
|
78
|
+
|
|
79
|
+
- **已有项目**:把 `appid` 写进 `manifest.json` 的 `appid` 字段(新应用不再需要 `app_key` 和 `publisher`),
|
|
80
|
+
并参考 已有项目接入云开发(文档站 /guide/integrate) 配置 SDK、构建和部署脚本。
|
|
81
|
+
|
|
82
|
+
**做完的标志**:`manifest.json` 里有正确的 `"appid": "zl…"`;本地 `npm run dev` 能打开页面。
|
|
83
|
+
|
|
84
|
+
### 第 3 步:登录并部署到自己的桌面
|
|
85
|
+
|
|
86
|
+
**做什么**:登录开发会话,构建、检查、上传一个开发版本,并把它安装 / 切换到自己桌面。
|
|
87
|
+
|
|
88
|
+
**在哪做**:项目目录里执行:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm run login -- --target https://os.example.com
|
|
92
|
+
# 浏览器打开后,核对页面与终端里的确认码一致,再点「允许开发工具」
|
|
93
|
+
|
|
94
|
+
npm run deploy
|
|
95
|
+
# 构建 → 检查 → 上传开发版本 → 安装 / 切换本人安装
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- 登录后的**访问凭据 30 分钟有效,CLI 会自动续期**;授权从首次登录起最长 30 天。
|
|
99
|
+
- `npm run deploy` 上传的是**开发版本**,只有应用成员能看到和安装,还不是线上版本。
|
|
100
|
+
- 声明了 `data.collections` 的应用,安装时平台会**自动创建开发环境、开通数据库、按 Manifest 建集合**,通常 1 分钟内完成。
|
|
101
|
+
|
|
102
|
+
**做完的标志**:终端输出 `app_id`、`version_id`,并提示「本人安装已是 v…」;控制台概览的「开通进度」到 **3/5**
|
|
103
|
+
(创建开发环境、开通数据库、创建集合已完成)。后两步「签名版本」「升级安装并激活」只在有云函数时才需要。
|
|
104
|
+
|
|
105
|
+
(截图:安装后的概览:前 3 步完成,开通进度 3/5,见文档站)
|
|
106
|
+
|
|
107
|
+
> **版本号会自动递增**(提示)
|
|
108
|
+
>
|
|
109
|
+
> `npm run deploy` 发现同一个 `version` 已经上传过不同内容时,会自动把补丁号加一。你也可以手动改 `manifest.json` 的 `version`。
|
|
110
|
+
|
|
111
|
+
### 第 4 步:打开应用,调试
|
|
112
|
+
|
|
113
|
+
**做什么**:从启动台打开应用,确认它连上了 OS、能读写数据,并学会看运行状态和日志。
|
|
114
|
+
|
|
115
|
+
**在哪做**:
|
|
116
|
+
|
|
117
|
+
- 启动台打开刚安装的应用。应用窗口顶部有「**权限**」和「**重新加载应用**」;左下应显示「**● OS 已连接**」。
|
|
118
|
+
- 控制台「概览」里的「**运行体检**」会逐层检查安装、授权、数据和后台能力,失败时给出具体层。
|
|
119
|
+
- 控制台「日志」页查页面错误和云函数日志;在项目里运行 `npm run logs` 查看最近 24 小时本人页面上报的错误和本人云函数日志
|
|
120
|
+
(默认自动选 `dev` / `prod`,也可 `npm run logs -- --environment dev`)。
|
|
121
|
+
- `npm run status` 等价于 `zleap-app diagnose <app_id>`,查看安装版本、权限和开通状态。
|
|
122
|
+
|
|
123
|
+
**做完的标志**:应用窗口能正常读写;运行体检显示各层通过;日志里没有持续报错。
|
|
124
|
+
|
|
125
|
+
(截图:部署后的应用窗口:OS 已连接,能读写待办,见文档站)
|
|
126
|
+
|
|
127
|
+
> **开发环境只对应用成员开放**(说明)
|
|
128
|
+
>
|
|
129
|
+
> `appid` 应用的开发数据域对**全部应用成员**(管理员 / 开发者)开放:在「成员」里加为开发者的同事装上开发版本,就能和你一起读写开发数据。
|
|
130
|
+
> 非成员访问会被拒绝(`PUBLISHER_REQUIRED`,「开发环境仅发布者本人可访问」)——要给他们用,请发布为线上版本(第 6 步)。
|
|
131
|
+
|
|
132
|
+
### 第 5 步:有云函数 / 后台能力时,签名并激活开发
|
|
133
|
+
|
|
134
|
+
**做什么**:让云函数和后台能力在开发环境里真正跑起来。只有 Manifest 声明了云函数、`runtime.backend` 或 `execution: "headless"` 的后台能力时才需要;
|
|
135
|
+
只用宿主能力的应用直接跳到第 6 步。
|
|
136
|
+
|
|
137
|
+
**在哪做**:
|
|
138
|
+
|
|
139
|
+
1. 控制台侧栏「发布」→「**版本管理**」,页面下方是「**开发环境:云函数激活**」。
|
|
140
|
+
按「新建候选 → 签名验证 → 激活开发」三步操作;这里只列出**你本人上传**的版本。
|
|
141
|
+
也可以在项目里运行 `npx zleap-app prepare <app_id> --version-id <id>`,等价完成开发环境准备(不碰生产)。
|
|
142
|
+
2. 打开应用窗口,点「**权限**」,在「**应用权限**」对话框里勾选「**后台能力(定时任务 / 云函数)**」下要用的能力,
|
|
143
|
+
点「**保存并重新加载**」。
|
|
144
|
+
|
|
145
|
+
两步没有先后要求,但**都做完**后台能力才会执行:只激活不允许,函数不会跑;只允许不激活,调用报 `FUNCTION_RELEASE_REQUIRED`。
|
|
146
|
+
|
|
147
|
+
**做完的标志**:控制台概览第 5 步显示「**已激活到开发环境**」;「云函数」页对应函数状态为「**可调用**」;
|
|
148
|
+
应用窗口「权限」里不再出现「该版本尚未激活发布版本,暂时无法执行。……」的提示。
|
|
149
|
+
|
|
150
|
+
(截图:版本管理页:上方发布线上版本,下方「开发环境:云函数激活」,见文档站)
|
|
151
|
+
|
|
152
|
+
### 第 6 步:发布为线上版本
|
|
153
|
+
|
|
154
|
+
**做什么**:把某个开发版本设为线上版本,让全企业用户可以用到。
|
|
23
155
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
详见 [版本管理](console-release.md#版本管理) 和 版本更新与授权登录(文档站 /reference/app-runtime)。
|
|
156
|
+
**在哪做**:控制台侧栏「发布」→「**版本管理**」,在要上线的版本行点「**发布为线上版本**」(可填「发布说明(可选)」)。
|
|
157
|
+
也可以在项目里发布最近一次 `npm run deploy` 上传的版本:
|
|
27
158
|
|
|
28
|
-
|
|
159
|
+
```bash
|
|
160
|
+
npm run release -- --notes "本次更新说明"
|
|
161
|
+
# 交互环境会二次确认;CI 等非交互环境加 --yes
|
|
162
|
+
# 等价于 zleap-app release <app_id> --version-id <version_id> --notes "…"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
发布后**全企业可见**:应用出现在应用中心,新安装装的是线上版本,不需要再「发布到企业目录」。
|
|
166
|
+
|
|
167
|
+
| 应用类型 | 发布时平台做什么 |
|
|
168
|
+
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
169
|
+
| **只用宿主能力**(没有集合、`cloud.*` 能力、后台能力) | 直接发布。不需要签名、激活,也不需要开发 / 生产环境 |
|
|
170
|
+
| **带云资源**(声明了集合、`cloud.*` 能力或后台能力) | 第一次发布时以上传者身份自动准备生产:生产环境、生产授权、签名、激活到生产、生产集合。要求上传者**正在使用这个版本**,否则 `UPLOADER_NOT_ON_VERSION` |
|
|
171
|
+
|
|
172
|
+
已经发布过的版本再次发布(包括回退)会复用当时的发布,**不再要求上传者安装着这个版本**。
|
|
173
|
+
|
|
174
|
+
> **部署没开放生产时**(说明)
|
|
29
175
|
>
|
|
30
|
-
>
|
|
176
|
+
> 带云资源的版本第一次发布会卡在准备生产(生产环境建不出来)。这是**部署未开放生产**,由运维决定,不是你的应用写错了;
|
|
177
|
+
> 只用宿主能力的应用不受影响。判断方式见[旧应用一节的两个问题](#先回答两个问题)。
|
|
178
|
+
|
|
179
|
+
**做完的标志**:「线上版本」卡片显示这个版本;应用中心能搜索到应用;同事可以安装。
|
|
180
|
+
|
|
181
|
+
> **应用中心「我的发布」里的 appid 版本**(提示)
|
|
182
|
+
>
|
|
183
|
+
> `appid` 应用的版本行显示「**仅成员可见**」,卡片统计是「企业 n / 开发版本 n」。成员版本上没有「发布到企业目录」,
|
|
184
|
+
> 而是「**去版本管理发布**」主按钮,点它打开云开发控制台「版本管理」;已发布的版本保持「**云开发**」按钮。上线统一在「版本管理」里点「发布为线上版本」。
|
|
185
|
+
|
|
186
|
+
> **第一次发布被 UPLOADER_NOT_ON_VERSION 拦下**(提示)
|
|
187
|
+
>
|
|
188
|
+
> 带云资源的版本第一次发布要求**上传者本人**当前安装的就是这个版本。让上传者在项目里再跑一次 `npm run deploy`
|
|
189
|
+
> (它会自动切换安装),然后再发布;也可以让上传者在「版本管理」里点「我也用这个」。
|
|
190
|
+
|
|
191
|
+
### 第 7 步:同事安装,之后自动更新
|
|
192
|
+
|
|
193
|
+
**做什么**:让同事在应用中心安装,并理解后续更新行为。
|
|
194
|
+
|
|
195
|
+
**在哪做**:同事打开「应用中心」→「发现」,找到应用并点「安装」。安装时会一次性授予该版本 Manifest 声明的数据 / 文件权限;
|
|
196
|
+
**后台能力仍需同事本人在应用窗口「权限」里勾选**。
|
|
197
|
+
|
|
198
|
+
**做完的标志**:同事能打开应用并读写**生产数据域**。开发环境里的数据不会带过去。
|
|
199
|
+
|
|
200
|
+
更新行为:
|
|
201
|
+
|
|
202
|
+
- 发布新线上版本后,没开着应用的使用者**下次打开自动更新**;
|
|
203
|
+
- 正开着旧版本的窗口会收到更新提示;
|
|
204
|
+
- **非成员**的旧窗口在新版本发布 **24 小时后会被强制切换**,提示「这个版本已超过 24 小时的使用期限,正在更新到最新版本…」;
|
|
205
|
+
- 应用里也可以用 `zl.app.getUpdateManager()` 主动提示立即更新。
|
|
206
|
+
|
|
207
|
+
详见 [版本管理](console-release.md) 和 版本更新与授权登录(文档站 /reference/app-runtime)。
|
|
208
|
+
|
|
209
|
+
### 第 8 步:迭代与回退
|
|
210
|
+
|
|
211
|
+
**做什么**:持续发新版本;出问题时回到旧版本。
|
|
212
|
+
|
|
213
|
+
**在哪做**:
|
|
214
|
+
|
|
215
|
+
- **迭代**:改代码 → `npm run deploy` 上传新开发版本 → 在「版本管理」或 `npm run release` 发布它。
|
|
216
|
+
- **自己先换到某个版本**:在「版本管理」里点「我也用这个」,或
|
|
217
|
+
`zleap-app update <app_id> --expected-version-id <当前> --version-id <新>`。
|
|
218
|
+
- **回退**:在旧版本行点「**回退到此版本**」,或 `zleap-app release <app_id> --version-id <旧版本 ID>`。
|
|
219
|
+
|
|
220
|
+
> **回退应用版本不等于回退业务数据**(危险)
|
|
31
221
|
>
|
|
32
|
-
>
|
|
33
|
-
>
|
|
34
|
-
> - 带云资源的应用在开发阶段照旧按 ⑤–⑦ 开通开发环境、调试;
|
|
35
|
-
> - ⑧ 上生产、⑨ 发布到企业目录、⑩ 让同事升级,都由「版本管理」里的「发布为线上版本」代替。
|
|
222
|
+
> 「回退到此版本」只改线上版本,**不会回退数据库里的数据**。目标版本的 `data` / `storage` 声明与当前版本不同时,
|
|
223
|
+
> `update` / `rollback` 会返回 `DATA_MIGRATION_REQUIRED` 并保持原版本;平台不会替你做数据迁移。
|
|
36
224
|
|
|
37
|
-
|
|
225
|
+
> **集合结构不会随新版本更新**(注意)
|
|
226
|
+
>
|
|
227
|
+
> 集合在开发环境数据库就绪后按 Manifest 自动创建;之后**新版本改 Schema 不会更新已有集合**。
|
|
228
|
+
> 需要调整结构时,新建一个集合并自行迁移数据。
|
|
229
|
+
|
|
230
|
+
### 第 9 步:一起开发
|
|
231
|
+
|
|
232
|
+
**做什么**:让同事能上传、调试和管理这个应用。
|
|
233
|
+
|
|
234
|
+
**在哪做**:控制台侧栏「团队」→「**成员**」→ 输入对方的登录名、手机号或邮箱,角色选「**开发者**」,点「添加」。
|
|
235
|
+
角色说明:**管理员**「管理成员与应用」;**开发者**「上传、调试与管理」。只有管理员能增删成员。
|
|
236
|
+
|
|
237
|
+
**做完的标志**:成员列表出现同事;同事用同一 `appid` 登录后,可以 `npm run deploy`,他上传的版本也会出现在「版本管理」里,
|
|
238
|
+
任何成员都可以把合适的版本发布为线上版本。
|
|
239
|
+
|
|
240
|
+
> **成员共享开发数据**(提示)
|
|
241
|
+
>
|
|
242
|
+
> 成员装上开发版本后使用的是同一个开发数据域,彼此能看到对方在共享集合里写的数据(私有集合按账号隔离)。
|
|
243
|
+
|
|
244
|
+
## 旧 `app_key` 应用的完整流程(手动签名、激活、企业目录) {#legacy-flow}
|
|
245
|
+
|
|
246
|
+
> **这一节只给旧应用**(说明)
|
|
247
|
+
>
|
|
248
|
+
> 下面 ①–⑩ 是早期 `app_key` 命名空间应用的完整流程:上传默认 private、手动签名并激活、手动激活生产、发布到企业目录。
|
|
249
|
+
> **新应用请用上面的推荐路线**,不要照这一节操作;`prepare` 对 `appid` 应用只准备开发环境,生产仍由首次「发布为线上版本」自动准备。
|
|
38
250
|
|
|
39
251
|
```
|
|
40
|
-
开发 上传与安装 开发环境 上线
|
|
41
|
-
────────── ────────────────── ───────────────────── ─────────────────── ─────────────
|
|
42
|
-
① 写代码 → ③ 上传(private) → ⑤ 开通清单 1–3 步 → ⑧ 生产环境 + 门禁 → ⑨ 发布到企业目录
|
|
43
|
-
② 检查打包 → ④ 安装给自己 → ⑥ 签名并激活开发* → 激活到生产** 同事安装使用
|
|
44
|
-
|
|
252
|
+
开发 上传与安装 开发环境 调试 上线 分享
|
|
253
|
+
────────── ────────────────── ───────────────────── ───────── ─────────────────── ─────────────
|
|
254
|
+
① 写代码 → ③ 上传(private) → ⑤ 开通清单 1–3 步 → ⑦ 验收 → ⑧ 生产环境 + 门禁 → ⑨ 发布到企业目录
|
|
255
|
+
② 检查打包 → ④ 安装给自己 → ⑥ 签名并激活开发* → → 激活到生产** 同事安装使用
|
|
256
|
+
⑩ 迭代新版本
|
|
45
257
|
|
|
46
258
|
* 只有声明了云函数 / 后台能力的应用需要
|
|
47
259
|
** 只有部署开放了生产环境时才有
|
|
48
260
|
```
|
|
49
261
|
|
|
50
|
-
|
|
262
|
+
### 先回答两个问题
|
|
51
263
|
|
|
52
264
|
整条流程有两个分叉,开始之前先确定:
|
|
53
265
|
|
|
@@ -63,28 +275,15 @@
|
|
|
63
275
|
|
|
64
276
|
由此得到四种路线:
|
|
65
277
|
|
|
66
|
-
| 部署 \ 应用 | 只有前端(只读写数据 / 文件)
|
|
67
|
-
| -------------- |
|
|
68
|
-
| **生产未开放** | ①–⑤ → ⑦ → ⑨
|
|
69
|
-
| **生产已开放** | ①–⑤ → ⑦ → ⑧ →
|
|
278
|
+
| 部署 \ 应用 | 只有前端(只读写数据 / 文件) | 有后台能力 / 云函数 |
|
|
279
|
+
| -------------- | ----------------------------- | --------------------------- |
|
|
280
|
+
| **生产未开放** | ①–⑤ → ⑦ → ⑨ | ①–⑦ → ⑨ |
|
|
281
|
+
| **生产已开放** | ①–⑤ → ⑦ → ⑧ → ⑨ | ①–⑦ → ⑧ → ⑨(或 `prepare`) |
|
|
70
282
|
|
|
71
|
-
|
|
283
|
+
### ① 写代码
|
|
72
284
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
推荐用脚手架起步(React + TypeScript + Vite,自带 Cloud SDK、`zleap-app` CLI、部署脚本和 AI 编程工具 skills):
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
npm create zleap-app@latest my-app -- --appid zl3f9a2c7e1b0d4a68 --name "我的应用"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
之后 ② ~ ④ 可以合并成一条 `npm run deploy`(构建 → 检查 → 上传 private → 安装/切换本人安装),首次先 `npm run login`。
|
|
83
|
-
也可以用原生模板(纯 HTML/JS,零构建):
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
zleap-app init hosted-package ./my-app --app-key zl3f9a2c7e1b0d4a68 # --app-key 填 appid
|
|
87
|
-
```
|
|
285
|
+
旧应用是在平台早期用 `app_key` 命名空间(如 `com.example.todo`)创建的应用。代码、Manifest、SDK 的写法和新应用相同,
|
|
286
|
+
区别是 Manifest 里写 `app_key` 而不是 `appid`,以及后面的上传、签名、上架流程不同。
|
|
88
287
|
|
|
89
288
|
要做的事:
|
|
90
289
|
|
|
@@ -103,39 +302,42 @@ zleap-app init hosted-package ./my-app --app-key zl3f9a2c7e1b0d4a68 # --app-ke
|
|
|
103
302
|
参考:Manifest v2 配置(文档站 /reference/manifest)、云数据库 API(文档站 /reference/database-api)、
|
|
104
303
|
云函数开发(文档站 /reference/cloud-function)、触发器(文档站 /reference/triggers)、[权限与授权](permissions.md)。
|
|
105
304
|
|
|
106
|
-
|
|
305
|
+
### ② 检查与打包
|
|
107
306
|
|
|
108
307
|
```bash
|
|
109
308
|
zleap-app check ./my-app
|
|
110
309
|
zleap-app pack ./my-app --output ./out/my-app.zip
|
|
111
310
|
```
|
|
112
311
|
|
|
113
|
-
- `pack`
|
|
114
|
-
|
|
312
|
+
- `pack` 必须给 `--output`。它产出确定性 ZIP,自动排除 `.env*`、`*.log`、`*.pem`、`node_modules`、`.git`、`out` 等;
|
|
313
|
+
仍请自己确认业务文件里没有内嵌密钥。
|
|
314
|
+
- 登录后可加 `--target https://os.example.com` 用目标部署的规则在线再校验一次;**带 `--target` 需要先登录**。
|
|
115
315
|
- **`check` 通过只代表静态规则通过**(`runtime_test=not_checked`),不代表应用能用。
|
|
116
316
|
|
|
117
317
|
带 `cloudfunctions/` 的包同样可以用 `zleap-app check / pack / publish`,校验规则与应用中心上传一致。
|
|
118
318
|
|
|
119
|
-
|
|
319
|
+
### ③ 上传
|
|
120
320
|
|
|
121
321
|
两种入口,任选其一:
|
|
122
322
|
|
|
123
|
-
| 入口 | 做法
|
|
124
|
-
| ------------ |
|
|
125
|
-
| **命令行** | `zleap-app auth login --target <OS> --app-key <
|
|
126
|
-
| **应用中心** | 「我的发布」→「自建应用」→「应用包」→「**上传应用包**」
|
|
323
|
+
| 入口 | 做法 | 结果 |
|
|
324
|
+
| ------------ | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
325
|
+
| **命令行** | `zleap-app auth login --target <OS> --app-key <app_key>`(浏览器核对确认码)→ `zleap-app publish <zip>` | **private(仅自己可见)**;回执里有 `app_id`、`version_id`、`package_id` |
|
|
326
|
+
| **应用中心** | 「我的发布」→「自建应用」→「应用包」→「**上传应用包**」 | 提示「应用包已上传,可继续发布到企业目录。」;若该应用已有企业可见版本,新版本**自动继承企业可见** |
|
|
127
327
|
|
|
128
328
|
两点约定:
|
|
129
329
|
|
|
130
330
|
- **每次上传都要提高 `version`**。同一版本号换了内容会被拒绝。
|
|
131
|
-
- 上传结果不明(`COMMIT_UNKNOWN`)时**不要直接重传**,先 `zleap-app status
|
|
132
|
-
- `
|
|
331
|
+
- 上传结果不明(`COMMIT_UNKNOWN`)时**不要直接重传**,先 `zleap-app status`(只列本人上传的包)或刷新「我的发布」核对。
|
|
332
|
+
上传回执在 `~/.config/zleap-app/operations/`,用 `zleap-app operation --request-id publish-…` 查询。
|
|
333
|
+
- 应用必须已经在平台存在(否则 40400);上传者必须是应用成员(否则 40300「你不是这个应用的开发者」,
|
|
334
|
+
请管理员在「成员」里把你加为开发者)。
|
|
133
335
|
|
|
134
336
|
部署配置了发布信任根时,上传会**自动生成一条草稿发布候选**,⑥ 里直接签它即可。
|
|
135
337
|
|
|
136
338
|
参考:[上传与发布应用](app-center-publish.md)。
|
|
137
339
|
|
|
138
|
-
|
|
340
|
+
### ④ 安装给自己
|
|
139
341
|
|
|
140
342
|
`zleap-app install <app_id>`,或在应用详情页点「**安装**」。
|
|
141
343
|
|
|
@@ -147,9 +349,9 @@ zleap-app pack ./my-app --output ./out/my-app.zip
|
|
|
147
349
|
|
|
148
350
|
参考:[安装与卸载](app-center-install.md)、[权限与授权](permissions.md)。
|
|
149
351
|
|
|
150
|
-
|
|
352
|
+
### ⑤ 开通开发环境
|
|
151
353
|
|
|
152
|
-
|
|
354
|
+
打开**云开发控制台**(系统内置,启动台「更多工具」里或搜索「云开发」直接打开),侧栏选中你的应用,「概览」里是 5 步开通清单。
|
|
153
355
|
前 3 步是「数据」组:
|
|
154
356
|
|
|
155
357
|
| 步骤 | 你要做的 | 完成标志 |
|
|
@@ -158,20 +360,20 @@ zleap-app pack ./my-app --output ./out/my-app.zip
|
|
|
158
360
|
| 2. 开通数据库 | 自动开始,页面每 3 秒刷新;失败时点「查看并重试」 | 「已就绪」 |
|
|
159
361
|
| 3. 创建集合 | 一般自动建好;缺了就点「**同步集合**」→「同步 Manifest 中的集合」 | 「已有 {n} 个集合」 |
|
|
160
362
|
|
|
161
|
-
**只有前端的应用到这里就能用了**——打开应用即可读写开发数据域。进度停在 3/5
|
|
363
|
+
**只有前端的应用到这里就能用了**——打开应用即可读写开发数据域。进度停在 3/5 是正常的;后两步只服务云函数。
|
|
162
364
|
|
|
163
|
-
|
|
365
|
+
开发环境默认**只有该版本的上传者本人**能访问(旧应用没有成员概念;其他人会得到 `PUBLISHER_REQUIRED`)。
|
|
164
366
|
|
|
165
367
|
参考:[工作区概览](console-workspace.md)、数据库(文档站 /console/database)。
|
|
166
368
|
|
|
167
|
-
|
|
369
|
+
### ⑥ 签名并激活开发(有后台部分时)
|
|
168
370
|
|
|
169
371
|
云函数和后台能力**只运行签名并激活的版本**。开通清单的后 2 步(「运行」组,「使用云函数或后台任务时需要」)就是这件事。
|
|
170
372
|
推荐顺序:
|
|
171
373
|
|
|
172
374
|
1. **签名**:控制台「**版本与激活**」页,在这个版本的草稿候选上点「**验证并签发**」
|
|
173
375
|
(确认框「为该候选签发发布证明?」,服务端用部署私钥签名,私钥不离开服务器)→ 候选变为「**已就绪**」。
|
|
174
|
-
|
|
376
|
+
没有草稿候选时先点「**新建发布候选**」选中这个应用包。
|
|
175
377
|
2. **允许后台运行**:点应用窗口顶部的「**权限**」,在「应用权限」对话框里勾选「**后台能力(定时任务 / 云函数)**」下要用的能力,
|
|
176
378
|
点「**保存并重新加载**」。当前安装版本已有「已就绪」发布时,这一步保存会**自动把该发布绑定到安装**。
|
|
177
379
|
3. **核对或补做激活**:回概览看第 5 步。显示「**已激活到开发环境**」就完成了;否则到「版本与激活」点「**激活开发**」
|
|
@@ -195,7 +397,7 @@ zleap-app pack ./my-app --output ./out/my-app.zip
|
|
|
195
397
|
|
|
196
398
|
参考:[版本与激活(旧应用)](console-legacy-release.md)、[云函数与后台能力](console-functions.md)。
|
|
197
399
|
|
|
198
|
-
|
|
400
|
+
### ⑦ 调试与验收
|
|
199
401
|
|
|
200
402
|
调试工具:
|
|
201
403
|
|
|
@@ -213,15 +415,16 @@ zleap-app pack ./my-app --output ./out/my-app.zip
|
|
|
213
415
|
|
|
214
416
|
- 运行机预先装好 Node.js 22.12+、Puppeteer Core 25+ 和 Chrome,准备一个仅属主可读写(0600)、放在仓库外的运行配置;
|
|
215
417
|
- 验收计划(JSON)固定 `app_key`、`version_id` 和 `steps`,**必须**包含读取断言、写操作、独立数据探针和刷新后断言;
|
|
418
|
+
- 命令是 `zleap-app test <plan.json> --runner-config <运行器配置>`,第一个参数是**计划文件**,不是应用目录;
|
|
216
419
|
- 报告用 `zleap-app logs <report_id>` 查看。只用专用测试账号和测试数据。
|
|
217
420
|
|
|
218
421
|
参考:日志(文档站 /console/logs)、[状态与错误码](status-codes.md)。
|
|
219
422
|
|
|
220
|
-
|
|
423
|
+
### ⑧ 上线到生产(部署已开放生产时)
|
|
221
424
|
|
|
222
425
|
生产数据域面向全体使用者,与开发数据域**完全隔离**:开发环境里的数据和授权都不会带过去。
|
|
223
426
|
|
|
224
|
-
|
|
427
|
+
#### 手动路线(控制台)
|
|
225
428
|
|
|
226
429
|
1. **生产环境与集合**:「激活到生产」会自动创建生产环境(也可以在控制台侧栏切到「生产环境」后在概览创建),
|
|
227
430
|
但**不会建集合**。环境一建好,应用窗口就会切到生产数据域,没有集合时报 `COLLECTION_NOT_FOUND`。
|
|
@@ -239,49 +442,53 @@ zleap-app pack ./my-app --output ./out/my-app.zip
|
|
|
239
442
|
> 「验证并签发」得到的证明,审批有效期最长为签发后 7 天。过期后这条候选进不了生产,且**已就绪的候选不能重新签发**——
|
|
240
443
|
> 需要为同一个应用包新建候选再签一次。所以签名之后尽快完成生产激活。
|
|
241
444
|
|
|
242
|
-
|
|
445
|
+
#### 一键准备 `prepare`
|
|
243
446
|
|
|
244
|
-
|
|
447
|
+
下面讲旧 `app_key` 应用的 `prepare`:一路准备到生产。平台 `appid` 应用也可以用 `prepare`,但它**只准备开发环境**
|
|
448
|
+
(开发环境 → 数据库 → 开发数据域权限 → 声明了 headless 时签名并激活到开发),不会碰生产,声明了 headless 时等同于控制台「版本管理」下方的
|
|
449
|
+
「开发环境:云函数激活」;`appid` 应用的生产由首次「发布为线上版本」自动准备。`prepare` 只接受你本人上传的版本,
|
|
450
|
+
传别人的 `version_id` 会得到 403「只能准备本人上传的版本」;旧应用则必须是本人 private 包,否则 403「只能准备本人private应用」。
|
|
245
451
|
|
|
246
452
|
```bash
|
|
247
453
|
zleap-app prepare <app_id> --version-id <version_id> --request-id $(openssl rand -hex 16)
|
|
248
454
|
```
|
|
249
455
|
|
|
250
|
-
`--request-id`
|
|
251
|
-
`prepare` 直接返回 `status: "not_required"
|
|
456
|
+
`--request-id` 可以不传(命令行自动生成,32 位小写十六进制)。旧应用没有声明任何云资源(没有 `cloud.*` 权限、后台能力和集合)时,
|
|
457
|
+
`prepare` 直接返回 `status: "not_required"`:装上就能用,不需要准备。`appid` 应用只声明数据时,在开发权限阶段后返回 `status: "ready"`。
|
|
458
|
+
|
|
459
|
+
下表是**旧 `app_key` 应用**的阶段(`completed_stages`);`appid` 应用只走到开发环境、数据库、开发权限,以及(声明了 headless 时)签名并激活到开发:
|
|
252
460
|
|
|
253
|
-
| 阶段(`completed_stages`) | 做了什么
|
|
254
|
-
| -------------------------- |
|
|
255
|
-
| `dev_environment` | 创建开发环境
|
|
256
|
-
| `database_allocation` | 开通数据库(有数据声明时)
|
|
257
|
-
| `prod_environment` | 创建生产环境——**部署未开放生产时在这里失败**
|
|
258
|
-
| `declared_permissions` |
|
|
259
|
-
| `release_candidate` | 为该应用包创建发布候选
|
|
260
|
-
| `release_sign` | 服务端签名
|
|
261
|
-
| `release_activate` | **激活到生产**
|
|
262
|
-
| `prod_collections` | 在生产环境按声明创建集合(有数据声明时)
|
|
461
|
+
| 阶段(`completed_stages`) | 做了什么 |
|
|
462
|
+
| -------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
463
|
+
| `dev_environment` | 创建开发环境 |
|
|
464
|
+
| `database_allocation` | 开通数据库(有数据声明时) |
|
|
465
|
+
| `prod_environment` | 创建生产环境——**部署未开放生产时在这里失败** |
|
|
466
|
+
| `declared_permissions` | 按声明授予生产数据域权限,并启用全部 headless 后台能力。**条件执行**:只有声明了云数据能力或数据库时才走 |
|
|
467
|
+
| `release_candidate` | 为该应用包创建发布候选 |
|
|
468
|
+
| `release_sign` | 服务端签名 |
|
|
469
|
+
| `release_activate` | **激活到生产** |
|
|
470
|
+
| `prod_collections` | 在生产环境按声明创建集合(有数据声明时) |
|
|
471
|
+
|
|
472
|
+
纯前台、或只有云函数而没有云数据能力的旧应用会跳过 `declared_permissions`;完全没有云资源的旧应用直接返回 `not_required`。
|
|
263
473
|
|
|
264
474
|
失败时返回卡住的 `stage` 和已完成的阶段,**不会自动重试**;先 `zleap-app diagnose` 核对,再用**同一个** `--request-id` 继续。
|
|
265
475
|
成功同样只是 `runtime_test=not_checked`。
|
|
266
476
|
|
|
267
477
|
> **生产激活影响全体使用者**(危险)
|
|
268
478
|
>
|
|
269
|
-
>
|
|
270
|
-
>
|
|
479
|
+
> 激活前请先在开发环境用**同一个版本**完整验证。旧应用的 `prepare` 会直接激活到生产并启用全部后台能力,
|
|
480
|
+
> 确认这正是你想要的再执行。`appid` 应用的 `prepare` 只到开发环境,不会改变线上版本。
|
|
271
481
|
|
|
272
482
|
参考:[版本与激活(旧应用)· 激活到生产](console-legacy-release.md#激活到生产)。
|
|
273
483
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
> **appid 应用**(提示)
|
|
277
|
-
>
|
|
278
|
-
> 在控制台「版本管理」里把版本「发布为线上版本」即全企业可见,不需要下面的「发布到企业目录」,见上文 [用 appid 的应用](#用-appid-的应用-上传后在版本管理里发布)。
|
|
484
|
+
### ⑨ 分享给同事
|
|
279
485
|
|
|
280
|
-
|
|
486
|
+
让同事用上(想让同事**一起开发**,是在控制台「成员」里把他加为开发者,见 [成员管理](console-members.md))。
|
|
487
|
+
旧应用上传的包默认只有你自己能看到:
|
|
281
488
|
|
|
282
489
|
1. **发布到企业目录**:应用中心「我的发布」展开「管理版本」,在版本行点「**发布到企业目录**」
|
|
283
490
|
(确认框「企业用户将能在应用中心看到这个固定版本。发布不会授予 Agent 或生产后台权限。」);
|
|
284
|
-
命令行等价操作 `zleap-app market-publish <package_id> --app-key <
|
|
491
|
+
命令行等价操作 `zleap-app market-publish <package_id> --app-key <app_key>`(注意是 `package_id`,不是 `app_id`)。目前**没有审核步骤**。
|
|
285
492
|
2. **同事安装**:同事在应用中心「发现」里找到并安装,安装时同样授予该版本声明的权限;
|
|
286
493
|
后台能力仍需同事本人在应用窗口「权限」里允许。安装带已就绪发布的版本时,会自动绑定该发布。
|
|
287
494
|
|
|
@@ -292,48 +499,58 @@ zleap-app prepare <app_id> --version-id <version_id> --request-id $(openssl rand
|
|
|
292
499
|
|
|
293
500
|
参考:[上传与发布应用](app-center-publish.md)、[安装与卸载](app-center-install.md)。
|
|
294
501
|
|
|
295
|
-
|
|
502
|
+
### ⑩ 迭代新版本
|
|
296
503
|
|
|
297
504
|
每次迭代都是「改代码 → 提高 `version` → 打包上传 → (有后台部分)签名 → 激活/升级」:
|
|
298
505
|
|
|
299
506
|
| 场景 | 做法 |
|
|
300
507
|
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
301
508
|
| 自己先换到新版本 | 控制台概览「升级到 v{x} 并激活」(需新版本已签名);或 `zleap-app update <app_id> --expected-version-id <当前> --version-id <新>` |
|
|
302
|
-
| 同事升级 |
|
|
509
|
+
| 同事升级 | 新版本先「发布到企业目录」,同事在应用中心「更新」里升级。**新版本必须先签成「已就绪」**,否则更新会被拦下 |
|
|
303
510
|
| 回退 | `zleap-app rollback <app_id> --expected-version-id <当前> --version-id <旧>`。只切换本人安装,**不回退业务数据** |
|
|
304
511
|
| 改了 `data` / `storage` 声明 | 命令行 `update` / `rollback` 返回 `DATA_MIGRATION_REQUIRED` 并保持原版本;应用中心更新会在预检里给出警告或阻断。平台不替你做数据迁移 |
|
|
305
512
|
| 想改已有集合的结构 | 新版本改 Schema **不会**更新已有集合;需要新建集合并自行迁移数据 |
|
|
306
513
|
| 下架某个版本 | 「撤回企业目录」/ `market-unpublish`。**撤回后其他人已有的安装将无法再打开该版本** |
|
|
307
514
|
|
|
515
|
+
> **先上新版本,再撤旧版本**(危险)
|
|
516
|
+
>
|
|
517
|
+
> 已安装旧版本的同事不会自动升级。直接撤回旧版本,他们下次打开会失败。正确顺序是:
|
|
518
|
+
> 新版本「发布到企业目录」→ 等同事在应用中心「更新」→ 再撤回旧版本。
|
|
519
|
+
|
|
308
520
|
权限在版本切换时的处理:应用中心更新时,如果新版本没有扩大 `requires`,原有授权自动延续;扩大了则需要重新同意。
|
|
309
521
|
命令行 `update` 会撤销旧授权、停用后台能力,再按目标版本重新授予声明的权限。
|
|
310
522
|
|
|
311
523
|
## 上线前检查清单
|
|
312
524
|
|
|
313
|
-
| 检查项 |
|
|
314
|
-
| ---------------------------------------------------------------- |
|
|
315
|
-
| Manifest 的集合结构已定稿(之后不能改) | `manifest.json`
|
|
316
|
-
| `check --target` 在目标部署上通过 |
|
|
317
|
-
|
|
|
318
|
-
| (有后台)已签名、已激活开发、后台能力已允许,函数状态「可调用」 |
|
|
319
|
-
| 用同一版本完成了真实读写验证(手动或 `zleap-app test`) | 应用窗口 / 验收报告 |
|
|
320
|
-
|
|
|
321
|
-
|
|
|
525
|
+
| 检查项 | `appid` 应用 | 旧 `app_key` 应用 |
|
|
526
|
+
| ---------------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------- |
|
|
527
|
+
| Manifest 的集合结构已定稿(之后不能改) | 检查 `manifest.json` | 同左 |
|
|
528
|
+
| `check --target` 在目标部署上通过 | 命令行(需先登录) | 同左 |
|
|
529
|
+
| (声明了集合时)开通清单前 3 步完成,运行体检全部通过 | 控制台概览(安装后通常自动 3/5) | 控制台概览(必要时手动创建 / 同步) |
|
|
530
|
+
| (有后台)已签名、已激活开发、后台能力已允许,函数状态「可调用」 | 「版本管理」下方「开发环境:云函数激活」+ 应用窗口「权限」 | 「版本与激活」+ 应用窗口「权限」 |
|
|
531
|
+
| 用同一版本完成了真实读写验证(手动或 `zleap-app test`) | 应用窗口 / 验收报告 | 同左 |
|
|
532
|
+
| (生产已开放时)生产环境与集合已准备好 | 首次「发布为线上版本」自动完成 | 生产门禁 7 项 +「激活到生产」或 `prepare` |
|
|
533
|
+
| 已发布给同事,同事安装后能打开并读写 | 「版本管理」→「发布为线上版本」(应用中心「发现」安装) | 「发布到企业目录」/ `market-publish`(应用中心安装) |
|
|
322
534
|
|
|
323
535
|
## 常见卡点
|
|
324
536
|
|
|
325
|
-
| 现象 | 原因
|
|
326
|
-
| -------------------------------------------------- |
|
|
327
|
-
| 上传报 40400「appid 不存在」 | `appid` 还没在控制台创建,或抄错了
|
|
328
|
-
| 上传报 40300「你不是这个应用的开发者」 | 你不是这个应用的成员
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
| `
|
|
333
|
-
| `
|
|
334
|
-
| `
|
|
335
|
-
| `
|
|
336
|
-
| `
|
|
337
|
-
| `
|
|
537
|
+
| 现象 | 原因 | 处理 | 适用 |
|
|
538
|
+
| -------------------------------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------- |
|
|
539
|
+
| 上传报 40400「appid 不存在」 | `appid` 还没在控制台创建,或抄错了 | 先在云开发控制台「创建应用」,复制它的 `appid` | `appid` |
|
|
540
|
+
| 上传报 40300「你不是这个应用的开发者」 | 你不是这个应用的成员 | 请应用管理员在控制台「成员」里把你加为开发者 | 两者 |
|
|
541
|
+
| `prepare` 报 403「只能准备本人private应用」 | 旧应用的包不是本人上传的 private 包 | 用本人上传且已安装的 private 包再准备 | 旧应用 |
|
|
542
|
+
| `prepare` 报 403「只能准备本人上传的版本」 | `appid` 应用传了别人上传的 `version_id` | 只准备本人上传的版本(可见性 `private` 或 `members`) | `appid` |
|
|
543
|
+
| 发布报 `UPLOADER_NOT_ON_VERSION` | 带云资源的版本第一次发布,上传者没在用这个版本 | 让上传者先 `npm run deploy` / 点「我也用这个」,再发布 | `appid` |
|
|
544
|
+
| 同事在应用中心看不到某个开发版本 | `appid` 应用的开发版本可见性为 `members`,只有应用成员能看到 | 把同事加为开发者;要给全企业用,在控制台「版本管理」发布为线上版本 | `appid` |
|
|
545
|
+
| 应用中心显示「暂不可用」 | 申请了白名单外的能力、`host_api.profile` 不是 `app-runtime/2` 等 | 应用中心 · 暂不可用(文档站 /app-center/overview#「暂不可用」是什么意思) | 两者 |
|
|
546
|
+
| 应用打开报「连接需要处理」/ `RESOURCE_NOT_READY` | 当前数据域没有环境或数据库未就绪 | 完成第 3 步 / ⑤(生产已开放时还要完成 ⑧) | 两者 |
|
|
547
|
+
| `SCOPE_FORBIDDEN`(服务端原因 `CONSENT_REQUIRED`) | 「权限」里的应用权限一项都没勾 | 勾选后「保存并重新加载」 | 两者 |
|
|
548
|
+
| `PUBLISHER_REQUIRED` | 非发布者访问开发数据域 | 用发布者账号调试,或完成 ⑧ / 发布线上版本后走生产数据域 | 两者 |
|
|
549
|
+
| `FUNCTION_RELEASE_REQUIRED` | 云函数所在版本没有绑定已就绪发布 | 完成 ⑥(`appid` 应用在「版本管理」下方做) | 两者 |
|
|
550
|
+
| `ENV_FORBIDDEN`(同事打不开) | 生产已开放,但应用还没有生产环境 | `appid` 应用先发布线上版本;旧应用完成 ⑧ | 两者 |
|
|
551
|
+
| `COLLECTION_NOT_FOUND`(激活到生产之后) | 生产数据域里还没有集合 | 旧应用在控制台生产环境「数据库」开通或跑 `prepare`;`appid` 应用检查 `data.collections` | 两者 |
|
|
552
|
+
| `prepare` 在 `prod_environment` 失败 | 部署未开放生产 | 改走控制台的开发环境流程;`appid` 应用等「发布为线上版本」自动准备 | 旧应用 |
|
|
553
|
+
| 首次「发布为线上版本」卡在准备生产 | 部署未开放生产,带云资源的版本建不出生产环境 | 联系运维开放生产;只用宿主能力的应用不受影响 | `appid` |
|
|
554
|
+
| `COMMIT_UNKNOWN` / 「结果待确认」 | 网络中断,服务端可能已处理 | 用原操作号查询结果,**不要换个编号重新提交** | 两者 |
|
|
338
555
|
|
|
339
556
|
完整错误码见 [状态与错误码](status-codes.md),平台未开放的能力见 平台边界与限制(文档站 /reference/limits)。
|