create-zleap-app 0.10.2 → 0.10.4

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.
@@ -19,7 +19,7 @@
19
19
 
20
20
  (截图:云函数页,见文档站)
21
21
 
22
- 云函数页:未激活时提示「云函数还不能运行,需要把签名版本激活到开发环境」并给出「去激活」;函数列表只读展示 Manifest 声明。
22
+ 云函数页:安装还没绑定签名发布时提示「云函数还不能运行」(appid 应用正常情况下不会出现,见[还没激活时](#还没激活时));函数列表只读展示 Manifest 声明。
23
23
 
24
24
  两个标签页只在**开发环境**下完整出现。切到**生产环境**时只剩只读的「后台能力」视图,顶部提示
25
25
  「生产环境只读:可以查看本人后台能力的调用记录与结果;函数调试、授权和触发器请在开发环境操作。」
@@ -42,10 +42,12 @@
42
42
  当前安装还没有绑定已签名发布时,列表上方显示:
43
43
 
44
44
  > **云函数还不能运行**
45
- >
46
- > 需要把签名版本激活到开发环境。
47
45
 
48
- 右侧按钮「**去激活**」跳到发布页:appid 应用是「版本管理」下方的「开发环境:云函数激活」,旧应用是[版本与激活](console-legacy-release.md)页。
46
+ appid 应用上传时自动签名,安装、切换版本、保存权限时自动绑定(还没有就绪发布的版本会当场补签),正常情况下不会看到这条提示。
47
+ 如果看到了,提示正文是「当前安装还没有绑定签名版本。带云函数的版本上传时由平台自动签名;到「后台能力」里允许后台运行(或在版本管理切换一次版本),平台会自动补签并绑定。」,
48
+ 右侧按钮「**去允许后台运行**」切到本页「后台能力」,在那里允许后台运行即会补签并绑定,见[带云资源的应用自动签名与绑定](console-release.md#带云资源的应用自动签名与绑定)。
49
+
50
+ 旧 `app_key` 应用的提示正文是「需要把签名版本激活到开发环境。」,右侧按钮「**去激活**」跳到[版本与激活](console-legacy-release.md)页完成激活开发。
49
51
 
50
52
  ### 函数表格
51
53
 
@@ -156,20 +158,24 @@ Provider 有三种类型,写在 `manifest.json` 的 `backend.providers` 里:
156
158
 
157
159
  「允许后台运行」要求 Manifest 的 `background.modes` 包含 `"on_demand"`,否则服务端拒绝(「应用未声明后台按需执行」)。
158
160
 
159
- > **授权操作会解除发布绑定**(注意)
161
+ > **授权与发布绑定**(提示)
162
+ >
163
+ > appid 应用:在这里点「允许后台运行」「撤销授权」「重新授权」,平台会同时把安装绑定到该版本的就绪发布
164
+ > (还没有就绪发布时当场补签),**不会解除发布绑定**,也不需要再去「激活开发」。
165
+ >
166
+ > 另一条路径是应用窗口顶部的「**权限**」:在其中勾选后台能力并「保存并重新加载」,
167
+ > 同样会把安装绑定到该版本的就绪发布(见[权限与授权](permissions.md))。
168
+ > `logic_unit`、`builtin` 类型的能力在开发环境不需要绑定发布。
169
+
170
+ > **旧 app_key 应用:授权操作会解除发布绑定**(注意)
160
171
  >
161
- > 按当前实现,在这里点「允许后台运行」「撤销授权」「重新授权」,都会**解除安装上的已签名发布绑定**。
172
+ > 旧应用在这里点「允许后台运行」「撤销授权」「重新授权」,都会**解除安装上的已签名发布绑定**。
162
173
  > 以 Node 云函数(`managed_function`)为执行方的能力随后会报 `FUNCTION_RELEASE_REQUIRED`,
163
- > 需要回到发布页再点一次「**激活开发**」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
164
- > 旧应用在[版本与激活](console-legacy-release.md#激活开发)页。
174
+ > 需要到[版本与激活](console-legacy-release.md#激活开发)页再点一次「**激活开发**」。
165
175
  > 安装已绑定发布时,确认框里会提前提示这一点;保存后面板顶部出现「**发布绑定已解除**」提示,侧栏「云函数」旁同步显示「未激活」。
166
176
  >
167
177
  > 「激活开发」**不要求**先允许后台运行,两者可以任意顺序完成;但只有两者都做了,后台能力才会真正执行。
168
178
  > 因为允许 / 撤销会解除发布绑定,推荐顺序仍是:**先允许后台运行,再激活开发**,最后重新加载应用。
169
- >
170
- > 另一条路径是应用窗口顶部的「**权限**」:在其中勾选后台能力并「保存并重新加载」,
171
- > 会同时把安装绑定到该版本最新的已就绪发布(见[权限与授权](permissions.md))。
172
- > `logic_unit`、`builtin` 类型的能力在开发环境不需要绑定发布。
173
179
 
174
180
  > **「关窗不取消后台授权」**(注意)
175
181
  >
@@ -503,15 +509,21 @@ Cron 用**五个字段**描述执行时间,依次为**分钟、小时、日期
503
509
 
504
510
  ### 函数状态一直是「已声明」,不是「可调用」
505
511
 
506
- 安装还没有绑定已签名发布。到发布页完成「验证并签发」和「激活开发」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
507
- 旧应用在[版本与激活](console-legacy-release.md)。appid 应用也可以在项目里运行
508
- `npx zleap-app prepare <app_id> --version-id <id>`,效果等同(只准备开发环境)。appid 应用的线上用户由「发布为线上版本」自动准备,不需要手动激活。
512
+ 安装还没有绑定已签名发布。
513
+
514
+ - appid 应用:上传时自动签名、安装和切换版本时自动绑定,正常情况下不会停在这里。在应用窗口「权限」里重新保存一次,
515
+ 或在「版本管理」里切换一次版本,平台会自动补签并绑定。只有 `zleap-app diagnose` 提示 `next_action: app_prepare` 时,
516
+ 才需要兜底运行 `zleap-app prepare`(只准备开发环境,不碰生产)。线上用户由「发布为线上版本」自动准备。
517
+ - 旧 `app_key` 应用:到[版本与激活](console-legacy-release.md)完成「验证并签发」和「激活开发」。
509
518
 
510
519
  ### 试运行或 `callFunction` 报 `FUNCTION_RELEASE_REQUIRED`
511
520
 
512
- Node 云函数只运行已签名并激活的版本。常见原因:还没激活;或激活后又在这里改过后台授权(会解除绑定)。
513
- 回到发布页点「**激活开发**」:appid 应用在「版本管理」下方的「开发环境:云函数激活」,
514
- 旧应用在[版本与激活](console-legacy-release.md#激活开发)页;然后重新加载应用。
521
+ Node 云函数只运行绑定了就绪签名发布的版本。
522
+
523
+ - appid 应用:正常情况下不会出现(上传自动签名 + 随用随签)。如果出现,在应用窗口「权限」里重新保存一次,
524
+ 或在「版本管理」切换一次版本,平台会自动补签并绑定;仍然出现,说明部署的发布签名不可用(联系平台管理员检查签名密钥 / 信任配置),或重新上传。
525
+ - 旧 `app_key` 应用:常见原因是还没激活,或激活后又在这里改过后台授权(会解除绑定)。
526
+ 到[版本与激活](console-legacy-release.md#激活开发)页完成「验证并签发」和「激活开发」,然后重新加载应用。
515
527
 
516
528
  ### 「后台能力」里看不到我的能力
517
529
 
@@ -6,8 +6,8 @@
6
6
  >
7
7
  > 本页只适用于用旧 `app_key` 命名空间上传的应用(包括它们上传应用包时自动登记的发布候选)。
8
8
  > 在控制台「创建应用」得到 `appid`(`zl…`)的应用,上线统一用「[版本管理](console-release.md#版本管理)」,不需要签名、激活、门禁这些步骤。
9
- > appid 应用在开发环境里要跑云函数时,用的是「版本管理」页下方的同名区块「**开发环境:云函数激活**」,
10
- > 操作步骤与本页相同,但入口不在本页。
9
+ > appid 应用的云函数版本在上传时由平台自动签名,安装、切换版本、允许后台运行时自动绑定,
10
+ > 也不需要本页的「验证并签发」「激活开发」(见[带云资源的应用自动签名与绑定](console-release.md#带云资源的应用自动签名与绑定))。
11
11
 
12
12
  ## 概览
13
13
 
@@ -123,8 +123,8 @@
123
123
 
124
124
  用 `appid` 的应用里,每个成员上传的都是一个**开发版本**,全部列在侧栏「发布」组的「[版本管理](console-release.md#版本管理)」里,标出上传者和上传时间:
125
125
 
126
- - 任何成员(管理员或开发者)都可以把其中一个「发布为线上版本」,或「回退到此版本」;
127
- - 「我也用这个」把你本人的安装切到任一成员上传的版本,包括同事还没发布的版本(方便联调);
126
+ - 任何成员(管理员或开发者)都可以把任一成员上传的版本「发布为线上版本」,或「回退到此版本」,不要求上传者正在使用这个版本;
127
+ - 「切换到此版本」只把你本人桌面上的应用切到任一成员上传的版本,包括同事还没发布的版本(方便联调),不影响其他人,也不改变线上版本;成员从不被自动切换;
128
128
  - 开发版本只对成员可见,不是成员的人看不到、也切不到。
129
129
 
130
130
  ## 用户授权
@@ -46,7 +46,7 @@
46
46
 
47
47
  (截图:版本管理页,见文档站)
48
48
 
49
- 版本管理页:上方是线上版本与发布说明,中间是版本列表和「发布为线上版本」;带云资源的应用下方还有「开发环境:云函数激活」。
49
+ 版本管理页:上方是线上版本与发布说明,中间是版本列表和「发布为线上版本」,最下方是发布记录。
50
50
 
51
51
  ### 每个版本的按钮
52
52
 
@@ -54,9 +54,10 @@
54
54
  | ------------------ | ------------------------------------------ | ------------------------------------------------------------------------------ |
55
55
  | **发布为线上版本** | 比线上版本新的版本,或还没发布过线上版本时 | 把这个版本设为线上版本 |
56
56
  | **回退到此版本** | 比线上版本旧的版本 | 同样是「发布」,只是目标是旧版本 |
57
- | **我也用这个** | 你已安装该应用,且不是你正在用的版本 | 把**你本人**的安装切到这个版本,提示「已切换到 v{版本},重新打开应用即可使用」 |
57
+ | **切换到此版本** | 你已安装该应用,且不是你正在用的版本 | 把**你本人**的安装切到这个版本,提示「你桌面上的应用已切换到 v{版本}(只影响你自己),重新打开应用即可使用」 |
58
58
 
59
- 「我也用这个」对所有成员上传的开发版本都可点,包括同事刚上传、还没发布的版本——方便联调同事的改动。
59
+ 悬停「切换到此版本」会提示:「只把你自己桌面上的这个应用切到这个版本,方便试用同事的改动;不影响其他人,也不改变线上版本」。
60
+ 它对所有成员上传的开发版本都可用,包括同事刚上传、还没发布的版本——方便联调同事的改动。
60
61
  不是成员的人看不到、也切不到开发版本。(个别在本次改版前上传的旧版本按钮置灰,悬停提示
61
62
  「这个版本暂时不能直接使用(旧数据);请上传者重新上传或发布为线上版本」。)
62
63
 
@@ -81,33 +82,42 @@
81
82
  - **正在用的人不被打断**:已经开着应用的人继续用原来的版本。应用可以用 `zl.app.getUpdateManager()` 提示用户立即更新,见 版本更新与授权登录(文档站 /reference/app-runtime)。
82
83
  - **下次打开自动跟随**:不是应用成员的使用者打开应用时,如果线上版本和他装的不一样(发布了新版本,或回退了),
83
84
  宿主先把他切到线上版本,显示「**正在更新到最新版本…**」,再加载应用。
84
- - **成员不自动切换**:管理员和开发者从不被自动切换,在本页用「我也用这个」自己选。
85
+ - **成员不自动切换**:管理员和开发者从不被自动切换,在本页用「切换到此版本」自己选。
85
86
  - **草稿应用不出现**:创建了但还没上传过任何版本的应用是草稿,不会出现在应用中心。
86
87
 
87
88
  ### 带云资源的版本
88
89
 
89
- 版本声明了 `data.collections`、任何 `cloud.*` 能力、`runtime.backend` 或 headless 的 `provides` 时,
90
- 「发布为线上版本」还会**以上传者的身份**准备好生产:开发与生产环境、生产数据域授权、签名、激活到生产、开通生产集合。
91
- 这些步骤由平台自动完成,**不需要你点「激活到生产」**(那个按钮只属于旧 `app_key` 应用),也不需要再手动做签名和激活。
90
+ 版本声明了 `data.collections`、任何 `cloud.*` 能力、`runtime.backend` 或 headless 的 `provides` 时,就是带云资源的版本。
91
+ 这样的版本**第一次**「发布为线上版本」时,平台会自动完成**应用级**的生产准备:
92
+ 生产环境 → 签发生产发布(归属上传者)→ 生产门禁(签名、审批窗口、信任策略核对)→ 生产库与生产集合。
93
+ 这些步骤不依赖任何人的安装,**任一成员都可以发布任一版本**,不要求上传者正在使用这个版本;
94
+ 也**不需要你点「激活到生产」**(那个按钮只属于旧 `app_key` 应用)。
92
95
 
93
- 这要求**上传者当前正在使用这个版本**,否则发布被拒绝:
96
+ 以下情况发布会被拒绝(业务码都是 40900,原因在 `detail.reason`):
94
97
 
95
- | 业务码 | message | `reason` | next_action |
96
- | ------ | ------------------------------------------------ | ------------------------- | --------------------------------------------------------------------- |
97
- | 40900 | 发布带云资源的版本前,上传者需要正在使用这个版本 | `UPLOADER_NOT_ON_VERSION` | 请上传者打开应用并切换到这个版本(npm run deploy 会自动切换),再发布 |
98
+ | 业务码 | message | `reason` | next_action |
99
+ | ------ | ------------------------------------------ | ------------------------- | -------------------------------------------------------------------------------------------------- |
100
+ | 40900 | 生产数据库还没就绪,暂时不能发布 | `PROD_DATABASE_NOT_READY` | 通常 1 分钟内就绪,稍后在版本管理里重新发布;持续失败请在控制台「数据库」查看状态 |
101
+ | 40900 | 这个版本的上传者账号已停用,无法发布 | `UPLOADER_INACTIVE` | 请其他成员重新上传这个版本(npm run deploy)后再发布 |
98
102
 
99
- 只用宿主能力、不需要任何云资源的版本,发布时不做这些准备。
103
+ 生产门禁不通过时,返回与激活相同的 `reason`(如 `RELEASE_APPROVAL_EXPIRED_OR_MISSING`、`RELEASE_POLICY_STALE`、`PRODUCTION_RELEASE_UNAVAILABLE`),重新发布即会重新签发。
100
104
 
101
- **再次发布 / 回退到以前发布过的版本**:当时的生产准备已经做完,直接复用当时就绪的发布,不再要求上传者切回这个版本。
105
+ **再次发布 / 回退到以前发布过的版本**:当时的生产准备已经做完,直接复用当时就绪的发布。
102
106
 
103
- 只有云函数、没有声明 `cloud.database.*` / `cloud.storage.*` 和集合的应用,准备时跳过「预授予数据权限」这一步。
107
+ 只用宿主能力、不需要任何云资源的版本,发布即可用,不做这些准备。
104
108
 
105
- ### 带云资源的应用:开发环境云函数激活
109
+ ### 带云资源的应用自动签名与绑定
106
110
 
107
- 带云函数 / 数据库的应用,「版本管理」页下方还有一块「**开发环境:云函数激活**」:只列出**你本人上传的**版本,
108
- 用于把它签名并激活到开发环境,云函数才能在开发环境运行(开发调试用;新建候选 → 签名验证 → 激活开发,步骤与旧应用相同,
109
- 见[版本与激活 · 激活开发](console-legacy-release.md#激活开发))。也可以在项目里运行
110
- `npx zleap-app prepare <app_id> --version-id <id>`,它只准备开发环境,不碰生产。给同事用不需要这里的操作,直接在上面「发布为线上版本」。
111
+ 带云函数 / 后台能力的版本,**上传时由平台自动签名**,得到就绪发布;没有「新建候选」「验证并签发」「激活开发」这些步骤,
112
+ 「版本管理」页也没有单独的云函数激活区块。
113
+
114
+ 之后在这些时机,平台会把安装自动绑定到该版本的就绪发布:安装应用;切换版本(本页「切换到此版本」、CLI `update` / `rollback`、`npm run deploy`);
115
+ 在应用窗口「权限」里保存;在控制台「云函数」页允许 / 撤销后台运行。
116
+
117
+ **随用随签**:如果这个版本还没有就绪发布(改动前上传的旧版本、上传时签名失败),上述时机平台会当场补签再绑定,不需要人工操作。
118
+
119
+ 后台能力仍然需要使用者本人在应用窗口「权限」里勾选「允许后台运行」,定时触发器仍要在控制台「触发器」里启用(或由使用者开启 `user_configurable` 的定时任务),见 [云函数与后台能力](console-functions.md)。
120
+ `zleap-app prepare` 通常不需要,只在 `zleap-app diagnose` 提示 `next_action: app_prepare` 时兜底使用;它只准备开发环境,不碰生产。
111
121
 
112
122
  ### 不需要云资源的应用:简化的控制台
113
123
 
@@ -4,8 +4,8 @@
4
4
 
5
5
  「**概览**」是控制台的首页。它有两种形态:
6
6
 
7
- - **开通清单**:五步还没全部完成时显示,告诉你下一步做什么,并把主按钮放在当前这一步上;
8
- - **资源卡片**:五步全部完成后显示,汇总各资源状态。
7
+ - **开通清单**:清单步骤还没全部完成时显示,告诉你下一步做什么,并把主按钮放在当前这一步上;
8
+ - **资源卡片**:清单全部完成后显示,汇总各资源状态。
9
9
 
10
10
  两种形态右侧 / 下方都有「**环境体检**」。
11
11
 
@@ -13,11 +13,18 @@
13
13
 
14
14
  页面标题:还没创建环境时是「**为 {应用名} 开通云端能力**」,开始之后是「**还差几步就能用上云端能力**」。
15
15
 
16
- 说明:
16
+ 说明(按应用类型不同):
17
17
 
18
- > 按顺序完成下面的步骤。前三步完成后,应用就能通过 Cloud SDK 读写数据和文件;云函数需要再签名并激活版本。
18
+ - appid 应用:
19
+ > 按顺序完成下面的步骤。完成后应用就能通过 Cloud SDK 读写数据和文件;带云函数的版本由平台自动签名,在应用窗口「权限」里允许后台运行即可。
20
+ - 旧 `app_key` 应用:
21
+ > 按顺序完成下面的步骤。前三步完成后,应用就能通过 Cloud SDK 读写数据和文件;云函数需要再签名并激活版本。
19
22
 
20
- 五步分成两组:
23
+ 清单的步骤数按应用类型不同:
24
+
25
+ - **appid 应用**只有**数据三步**(创建开发环境 → 开通数据库 → 创建集合),没有「签名版本」「升级安装并激活」,也没有「去签名」「去激活」按钮。
26
+ 带后台能力的版本上传时由平台自动签名,安装、切换版本时自动绑定,见 [发布版本 · 带云资源的应用自动签名与绑定](console-release.md#带云资源的应用自动签名与绑定)。
27
+ - **旧 `app_key` 应用**有五步,分成两组:
21
28
 
22
29
  | # | 步骤 | 分组 | 什么时候算完成 |
23
30
  | --- | ------------------ | -------------------------------------------------- | -------------------------------------------- |
@@ -30,12 +37,12 @@
30
37
  推进规则:
31
38
 
32
39
  - 每组内**按顺序**推进,同一时刻只有一步是「当前步骤」(带主按钮),后面的步骤显示为灰色等待;
33
- - **数据组三步没完成前,运行组不会成为当前步骤**;
40
+ - **数据组三步没完成前,运行组不会成为当前步骤**(运行组只有旧应用有);
34
41
  - 已完成的步骤打勾;开通失败的步骤显示警示图标。
35
42
 
36
43
  (截图:开通清单,见文档站)
37
44
 
38
- 开通清单:1–3 已完成,第 4 步「签名版本」给出「去签名」,右侧是环境资源卡和环境体检。
45
+ 开通清单:数据三步(1–3)已完成,右侧是环境资源卡和环境体检。
39
46
 
40
47
  ### 第 1 步:创建开发环境
41
48
 
@@ -76,8 +83,9 @@
76
83
  > 部署开放生产环境、并在侧栏切到「生产环境」时,这一步的按钮会变成「创建生产环境」。
77
84
  > 但大多数情况下不需要在这里手动创建:
78
85
  >
79
- > - **appid 应用**:带云资源的版本第一次「发布为线上版本」时,平台会**以上传者的身份自动准备生产**(生产环境、生产授权、签名、激活到生产、生产集合一次完成),
80
- > 要求上传者当前正用着这个版本。只用宿主能力的应用直接发布即可,不需要签名激活。`zleap-app prepare` 对 appid 应用只准备开发环境(等价于「开发环境:云函数激活」),不会碰生产。
86
+ > - **appid 应用**:带云资源的版本第一次「发布为线上版本」时,平台会自动完成**应用级**的生产准备(生产环境、签发生产发布、生产门禁、生产库与生产集合),
87
+ > 不依赖任何人的安装,也不要求上传者正在使用这个版本。只用宿主能力的应用直接发布即可。
88
+ > `zleap-app prepare` 对 appid 应用通常不需要,只在 `zleap-app diagnose` 提示 `next_action: app_prepare` 时兜底使用;它只准备开发环境,不会碰生产。
81
89
  > - **旧 `app_key` 应用**:「激活到生产」会自动创建生产环境,但不会建集合;之后到生产环境的「数据库」页开通。
82
90
  >
83
91
  > 各面板在生产环境下能做什么,见 界面总览 · 环境切换(文档站 /console/overview#环境标签与环境切换)。
@@ -109,9 +117,14 @@
109
117
  > 控制台取的是你本人当前安装版本的 Manifest(`data.schemas` 的键)。如果你还没安装这个应用,或装的是旧版本,
110
118
  > 这里可能显示「没有声明集合」。先在应用中心安装 / 更新到包含声明的版本。
111
119
 
112
- 如果你的 Manifest 确实没有 `data`——即应用不用云数据库——这一步无法完成,运行组也不会成为当前步骤。
120
+ 如果你的 Manifest 确实没有 `data`——即应用不用云数据库——这一步无法完成,(旧应用的)运行组也不会成为当前步骤。
113
121
  声明方法见 Manifest v2 配置(文档站 /reference/manifest) 的「data — 数据集合」一节。
114
122
 
123
+ > **第 4、5 步只有旧 app_key 应用有**(提示)
124
+ >
125
+ > 下面两步只出现在旧 `app_key` 应用的清单里。appid 应用没有这两步:上传即签名、安装即绑定,
126
+ > 后台能力仍需使用者本人在应用窗口「权限」里勾选「允许后台运行」。
127
+
115
128
  ### 第 4 步:签名版本
116
129
 
117
130
  | 状态 | 说明文字 | 操作 |
@@ -119,9 +132,8 @@
119
132
  | 当前 | 为要运行的版本生成签名。只有签名过的版本才能运行云函数。 | 「**去签名**」→ 跳到发布页 |
120
133
  | 完成 | 已有签名版本 | — |
121
134
 
122
- 「去签名」跳到的发布页按应用类型区分:**appid 应用**是「版本管理」页下方的「**开发环境:云函数激活**」区块,
123
- **旧 `app_key` 应用**是「[版本与激活](console-legacy-release.md)」页。
124
- 「签名版本」= 在发布页把一条**发布候选**(某个版本 + 应用包的签名记录)验证到「**已就绪**」。见 [发布版本](console-release.md)。
135
+ 「去签名」跳到「[版本与激活](console-legacy-release.md)」页。
136
+ 「签名版本」= 在发布页把一条**发布候选**(某个版本 + 应用包的签名记录)验证到「**已就绪**」。
125
137
 
126
138
  ### 第 5 步:升级安装并激活
127
139
 
@@ -134,8 +146,7 @@
134
146
  | 完成 | 已激活到开发环境 | — |
135
147
 
136
148
  **目标版本**是最新一个「已就绪」发布候选对应的版本,且与你当前安装的版本不同。
137
- 如果最新签名版本**就是**你装的版本,升级无事可做,这时按钮是「去激活」,到发布页对该候选点「**激活开发**」。
138
- 发布页同样按应用类型区分:appid 应用在「版本管理」下方的「开发环境:云函数激活」,旧应用在「版本与激活」。
149
+ 如果最新签名版本**就是**你装的版本,升级无事可做,这时按钮是「去激活」,到「[版本与激活](console-legacy-release.md#激活开发)」页对该候选点「**激活开发**」。
139
150
 
140
151
  点「升级到 v{x} 并激活」时:
141
152
 
@@ -175,7 +186,7 @@
175
186
 
176
187
  ## 资源卡片视图(全部完成后)
177
188
 
178
- 五步全部完成后,概览变为:
189
+ 清单全部完成后,概览变为:
179
190
 
180
191
  - 标题「**{应用名} · {当前环境}**」(开发环境显示「{应用名} · 开发环境」,切到生产时是「{应用名} · 生产环境」),右侧标签「**全部就绪**」;
181
192
  - 说明「所有资源已就绪。应用通过 Cloud SDK 读写的就是这里的数据。」
@@ -254,7 +265,8 @@ L2、L3 只在资源编排服务已配置时检查;L4、L5 只在绑定记录
254
265
 
255
266
  ### 我的应用不用云函数,进度一直停在 3/5
256
267
 
257
- 正常。运行组「使用云函数或后台任务时需要」,可以不做。数据库和文件存储已经可以通过 Cloud SDK 使用。
268
+ 这是旧 `app_key` 应用的情况,正常。运行组「使用云函数或后台任务时需要」,可以不做。数据库和文件存储已经可以通过 Cloud SDK 使用。
269
+ appid 应用的清单只有数据三步,三步完成即全部完成。
258
270
 
259
271
  ### 升级激活提示「现在不能升级」
260
272
 
@@ -265,6 +277,6 @@ L2、L3 只在资源编排服务已配置时检查;L4、L5 只在绑定记录
265
277
 
266
278
  - 界面总览(文档站 /console/overview) — 侧栏、环境切换、资源状态
267
279
  - 数据库(文档站 /console/database) — 开通状态、集合同步、文档
268
- - [发布版本](console-release.md) — 签名与「激活开发」
269
- - [云函数与后台能力](console-functions.md) — 激活后的后台授权
280
+ - [发布版本](console-release.md) — appid 应用的版本管理与自动签名;旧应用见[版本与激活](console-legacy-release.md)
281
+ - [云函数与后台能力](console-functions.md) — 后台授权
270
282
  - [从开发到上线](dev-to-production.md)
@@ -12,14 +12,15 @@
12
12
  平台现在**推荐、并且新建的都是 `appid` 应用**:在云开发控制台「创建应用」得到 `zl` + 16 位十六进制的应用标识。
13
13
  早期还有一批用 `app_key` 命名空间(如 `com.example.todo`)创建的旧应用,它们仍能使用,但上线方式不同。
14
14
 
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) |
15
+ | 对比项 | 平台 `appid` 应用(推荐) | 旧 `app_key` 应用 |
16
+ | ------------ | ---------------------------------------------------------------- | ----------------------------------------------------- |
17
+ | Manifest | 写 `"appid": "zl…"` | 写 `"app_key": "com.example.todo"` |
18
+ | 每次上传 | **开发版本**,可见性 `members`(只有应用成员能看到、安装) | **private**(只有上传者本人) |
19
+ | 上线方式 | 控制台「版本管理」→「发布为线上版本」 | 应用中心「发布到企业目录」/ `market-publish` |
20
+ | 生产环境 | 首次「发布为线上版本」时**自动准备** | 手动「激活到生产」,或 `prepare`(仅本人 private 包) |
21
+ | 签名 / 激活 | 不需要:带后台能力的版本上传时自动签名,安装、切换版本时自动绑定 | 「版本与激活」里手动验证并签发、激活开发 |
22
+ | 生产准备命令 | 不需要:首次「发布为线上版本」自动准备;`prepare` 只在 `diagnose` 提示时兜底准备开发环境 | `zleap-app prepare` |
23
+ | 读哪一节 | 下面的[推荐路线](#推荐路线-appid-应用从开发到上线) | 后半部分[旧应用的完整流程](#legacy-flow) |
23
24
 
24
25
  > **先确认你的应用是哪种**(提示)
25
26
  >
@@ -34,13 +35,14 @@
34
35
  脚手架新建项目 / 已有项目接入
35
36
  ↓
36
37
  npm run login → npm run deploy(构建 → 检查 → 上传开发版本 → 装到自己桌面)
37
- ↓ ↘ 声明了集合的应用:安装时自动开通开发环境、数据库、集合
38
+ ↓ ↘ 声明了集合:安装时自动开通开发环境、数据库、集合
39
+ ↓ ↘ 声明了后台能力:上传时自动签名,安装时自动绑定
38
40
  打开应用调试(运行体检、控制台日志、npm run logs)
39
41
  ↓
40
- 有云函数?→ 控制台「版本管理」下方「开发环境:云函数激活」签名并激活
41
- → 应用窗口「权限」里允许后台能力
42
+ 有后台能力?→ 应用窗口「权限」里允许后台运行
43
+ (定时触发器在控制台「触发器」里启用)
42
44
  ↓
43
- 发布为线上版本(首次带云资源时自动准备生产)
45
+ 任一成员发布为线上版本(首次带云资源时平台自动准备生产)
44
46
  ↓
45
47
  同事在应用中心安装;下次打开自动更新,非成员 24 小时后强制更新
46
48
  ↓
@@ -98,11 +100,10 @@ npm run deploy
98
100
  - 登录后的**访问凭据 30 分钟有效,CLI 会自动续期**;授权从首次登录起最长 30 天。
99
101
  - `npm run deploy` 上传的是**开发版本**,只有应用成员能看到和安装,还不是线上版本。
100
102
  - 声明了 `data.collections` 的应用,安装时平台会**自动创建开发环境、开通数据库、按 Manifest 建集合**,通常 1 分钟内完成。
103
+ - 声明了后台(headless)能力的版本,平台在**上传时自动签名**,安装 / 切换到这个版本时自动绑定,不需要手动签名或激活。
101
104
 
102
- **做完的标志**:终端输出 `app_id`、`version_id`,并提示「本人安装已是 v…」;控制台概览的「开通进度」到 **3/5**
103
- (创建开发环境、开通数据库、创建集合已完成)。后两步「签名版本」「升级安装并激活」只在有云函数时才需要。
104
-
105
- (截图:安装后的概览:前 3 步完成,开通进度 3/5,见文档站)
105
+ **做完的标志**:终端输出 `app_id`、`version_id`,并提示「本人安装已是 v…」;控制台概览的开通清单三步
106
+ (创建开发环境、开通数据库、创建集合)全部完成。`appid` 应用的开通清单只有这三步,没有签名、激活。
106
107
 
107
108
  > **版本号会自动递增**(提示)
108
109
  >
@@ -129,31 +130,38 @@ npm run deploy
129
130
  > `appid` 应用的开发数据域对**全部应用成员**(管理员 / 开发者)开放:在「成员」里加为开发者的同事装上开发版本,就能和你一起读写开发数据。
130
131
  > 非成员访问会被拒绝(`PUBLISHER_REQUIRED`,「开发环境仅发布者本人可访问」)——要给他们用,请发布为线上版本(第 6 步)。
131
132
 
132
- ### 第 5 步:有云函数 / 后台能力时,签名并激活开发
133
+ ### 第 5 步:有云函数 / 后台能力时,允许后台运行
133
134
 
134
135
  **做什么**:让云函数和后台能力在开发环境里真正跑起来。只有 Manifest 声明了云函数、`runtime.backend` 或 `execution: "headless"` 的后台能力时才需要;
135
136
  只用宿主能力的应用直接跳到第 6 步。
136
137
 
138
+ 不需要签名、激活:平台在上传时已自动签名;安装、切换版本、在「权限」里保存、在控制台「云函数」页允许 / 撤销后台运行时,
139
+ 平台都会把你的安装绑定到该版本的就绪发布。改动前上传的旧版本、上传时签名失败的版本,也会在这些时机当场补签再绑定。
140
+
137
141
  **在哪做**:
138
142
 
139
- 1. 控制台侧栏「发布」→「**版本管理**」,页面下方是「**开发环境:云函数激活**」。
140
- 按「新建候选 → 签名验证 → 激活开发」三步操作;这里只列出**你本人上传**的版本。
141
- 也可以在项目里运行 `npx zleap-app prepare <app_id> --version-id <id>`,等价完成开发环境准备(不碰生产)。
142
- 2. 打开应用窗口,点「**权限**」,在「**应用权限**」对话框里勾选「**后台能力(定时任务 / 云函数)**」下要用的能力,
143
- 点「**保存并重新加载**」。
143
+ 1. 打开应用窗口,点「**权限**」,在「**应用权限**」对话框里勾选「**后台能力(定时任务 / 云函数)**」下要用的能力,
144
+ 点「**保存并重新加载**」。后台能力必须由**使用者本人**授权,这一步不能省。
145
+ 2. 有定时触发器的,在控制台「**触发器**」里启用(或由使用者开启 `user_configurable` 的定时任务)。
144
146
 
145
- 两步没有先后要求,但**都做完**后台能力才会执行:只激活不允许,函数不会跑;只允许不激活,调用报 `FUNCTION_RELEASE_REQUIRED`。
147
+ **做完的标志**:「云函数」页对应函数状态为「**可调用**」;应用窗口「权限」里不再出现「该版本还没有可用的签名发布,暂时无法执行。……」的提示。
146
148
 
147
- **做完的标志**:控制台概览第 5 步显示「**已激活到开发环境**」;「云函数」页对应函数状态为「**可调用**」;
148
- 应用窗口「权限」里不再出现「该版本尚未激活发布版本,暂时无法执行。……」的提示。
149
+ > **调用报 FUNCTION_RELEASE_REQUIRED**(提示)
150
+ >
151
+ > 正常情况下不会出现。如果出现:在应用窗口「权限」里重新保存一次,或在控制台「版本管理」切换一次版本,平台会自动补签并绑定;
152
+ > 仍然出现,说明部署的发布签名不可用(请平台管理员检查签名密钥 / 信任配置),或重新上传这个版本。
149
153
 
150
- (截图:版本管理页:上方发布线上版本,下方「开发环境:云函数激活」,见文档站)
154
+ > **通常用不到 zleap-app prepare**(提示)
155
+ >
156
+ > 只有 `zleap-app diagnose` 提示 `next_action: app_prepare` 时,才用 `npx zleap-app prepare <app_id> --version-id <id>` 兜底;
157
+ > 它只准备开发环境,不碰生产。
151
158
 
152
159
  ### 第 6 步:发布为线上版本
153
160
 
154
161
  **做什么**:把某个开发版本设为线上版本,让全企业用户可以用到。
155
162
 
156
163
  **在哪做**:控制台侧栏「发布」→「**版本管理**」,在要上线的版本行点「**发布为线上版本**」(可填「发布说明(可选)」)。
164
+ **任一成员都可以发布任一版本**,包括同事上传的版本。
157
165
  也可以在项目里发布最近一次 `npm run deploy` 上传的版本:
158
166
 
159
167
  ```bash
@@ -164,12 +172,12 @@ npm run release -- --notes "本次更新说明"
164
172
 
165
173
  发布后**全企业可见**:应用出现在应用中心,新安装装的是线上版本,不需要再「发布到企业目录」。
166
174
 
167
- | 应用类型 | 发布时平台做什么 |
168
- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
169
- | **只用宿主能力**(没有集合、`cloud.*` 能力、后台能力) | 直接发布。不需要签名、激活,也不需要开发 / 生产环境 |
170
- | **带云资源**(声明了集合、`cloud.*` 能力或后台能力) | 第一次发布时以上传者身份自动准备生产:生产环境、生产授权、签名、激活到生产、生产集合。要求上传者**正在使用这个版本**,否则 `UPLOADER_NOT_ON_VERSION` |
175
+ | 应用类型 | 发布时平台做什么 |
176
+ | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
177
+ | **只用宿主能力**(没有集合、`cloud.*` 能力、后台能力) | 直接发布,发布即可用。不需要签名、激活,也不需要开发 / 生产环境 |
178
+ | **带云资源**(声明了集合、`cloud.*` 能力或后台能力) | 第一次发布时自动完成**应用级**生产准备:生产环境 → 签发生产发布(归属上传者)→ 生产门禁(签名、审批窗口、信任策略核对)→ 生产库与生产集合。不依赖任何人的安装 |
171
179
 
172
- 已经发布过的版本再次发布(包括回退)会复用当时的发布,**不再要求上传者安装着这个版本**。
180
+ 已经发布过的版本再次发布(包括回退)直接复用当时的就绪发布。
173
181
 
174
182
  > **部署没开放生产时**(说明)
175
183
  >
@@ -183,10 +191,13 @@ npm run release -- --notes "本次更新说明"
183
191
  > `appid` 应用的版本行显示「**仅成员可见**」,卡片统计是「企业 n / 开发版本 n」。成员版本上没有「发布到企业目录」,
184
192
  > 而是「**去版本管理发布**」主按钮,点它打开云开发控制台「版本管理」;已发布的版本保持「**云开发**」按钮。上线统一在「版本管理」里点「发布为线上版本」。
185
193
 
186
- > **第一次发布被 UPLOADER_NOT_ON_VERSION 拦下**(提示)
194
+ > **第一次发布没成功**(提示)
195
+ >
196
+ > 带云资源的版本第一次发布可能返回 40900(看 `detail.reason`):
187
197
  >
188
- > 带云资源的版本第一次发布要求**上传者本人**当前安装的就是这个版本。让上传者在项目里再跑一次 `npm run deploy`
189
- > (它会自动切换安装),然后再发布;也可以让上传者在「版本管理」里点「我也用这个」。
198
+ > - `PROD_DATABASE_NOT_READY`「生产数据库还没就绪,暂时不能发布」:通常 1 分钟内就绪,稍后在「版本管理」里重新发布;持续失败请在控制台「数据库」查看状态。
199
+ > - `UPLOADER_INACTIVE`「这个版本的上传者账号已停用,无法发布」:请其他成员重新上传这个版本(`npm run deploy`)后再发布。
200
+ > - 生产门禁不通过(如 `RELEASE_APPROVAL_EXPIRED_OR_MISSING`、`RELEASE_POLICY_STALE`、`PRODUCTION_RELEASE_UNAVAILABLE`):重新发布即会重新签发。
190
201
 
191
202
  ### 第 7 步:同事安装,之后自动更新
192
203
 
@@ -213,7 +224,7 @@ npm run release -- --notes "本次更新说明"
213
224
  **在哪做**:
214
225
 
215
226
  - **迭代**:改代码 → `npm run deploy` 上传新开发版本 → 在「版本管理」或 `npm run release` 发布它。
216
- - **自己先换到某个版本**:在「版本管理」里点「我也用这个」,或
227
+ - **自己先换到某个版本**:在「版本管理」里点「**切换到此版本**」(只切你自己桌面上的应用,不影响其他人,也不改变线上版本),或
217
228
  `zleap-app update <app_id> --expected-version-id <当前> --version-id <新>`。
218
229
  - **回退**:在旧版本行点「**回退到此版本**」,或 `zleap-app release <app_id> --version-id <旧版本 ID>`。
219
230
 
@@ -246,7 +257,7 @@ npm run release -- --notes "本次更新说明"
246
257
  > **这一节只给旧应用**(说明)
247
258
  >
248
259
  > 下面 ①–⑩ 是早期 `app_key` 命名空间应用的完整流程:上传默认 private、手动签名并激活、手动激活生产、发布到企业目录。
249
- > **新应用请用上面的推荐路线**,不要照这一节操作;`prepare` 对 `appid` 应用只准备开发环境,生产仍由首次「发布为线上版本」自动准备。
260
+ > **新应用请用上面的推荐路线**,不要照这一节操作;`appid` 应用不需要手动签名、激活,`prepare` 也只在 `diagnose` 提示时兜底准备开发环境,生产由首次「发布为线上版本」自动准备。
250
261
 
251
262
  ```
252
263
  开发 上传与安装 开发环境 调试 上线 分享
@@ -380,7 +391,7 @@ zleap-app pack ./my-app --output ./out/my-app.zip
380
391
  (确认框「激活到开发环境?」)。如果你装的是更旧的版本,概览第 5 步会直接给出「**升级到 v{x} 并激活**」,一步完成升级与绑定。
381
392
 
382
393
  做完的标志:概览第 5 步显示「**已激活到开发环境**」,「云函数」页函数状态为「**可调用**」,
383
- 应用窗口「权限」对话框里不再出现「该版本尚未激活发布版本,暂时无法执行。……」的提示。
394
+ 应用窗口「权限」对话框里不再出现「该版本还没有可用的签名发布,暂时无法执行。……」的提示。
384
395
 
385
396
  > **两个容易踩的坑**(注意)
386
397
  >
@@ -444,9 +455,9 @@ zleap-app pack ./my-app --output ./out/my-app.zip
444
455
 
445
456
  #### 一键准备 `prepare`
446
457
 
447
- 下面讲旧 `app_key` 应用的 `prepare`:一路准备到生产。平台 `appid` 应用也可以用 `prepare`,但它**只准备开发环境**
448
- (开发环境 → 数据库 → 开发数据域权限 → 声明了 headless 时签名并激活到开发),不会碰生产,声明了 headless 时等同于控制台「版本管理」下方的
449
- 「开发环境:云函数激活」;`appid` 应用的生产由首次「发布为线上版本」自动准备。`prepare` 只接受你本人上传的版本,
458
+ 下面讲旧 `app_key` 应用的 `prepare`:一路准备到生产。平台 `appid` 应用**通常不需要** `prepare`,只在 `zleap-app diagnose` 提示
459
+ `next_action: app_prepare` 时兜底使用;它**只准备开发环境**(开发环境 → 数据库 → 开发数据域权限 → 声明了 headless 时签名并绑定到开发),
460
+ 不会碰生产,`appid` 应用的生产由首次「发布为线上版本」自动准备。`prepare` 只接受你本人上传的版本,
450
461
  传别人的 `version_id` 会得到 403「只能准备本人上传的版本」;旧应用则必须是本人 private 包,否则 403「只能准备本人private应用」。
451
462
 
452
463
  ```bash
@@ -456,7 +467,7 @@ zleap-app prepare <app_id> --version-id <version_id> --request-id $(openssl rand
456
467
  `--request-id` 可以不传(命令行自动生成,32 位小写十六进制)。旧应用没有声明任何云资源(没有 `cloud.*` 权限、后台能力和集合)时,
457
468
  `prepare` 直接返回 `status: "not_required"`:装上就能用,不需要准备。`appid` 应用只声明数据时,在开发权限阶段后返回 `status: "ready"`。
458
469
 
459
- 下表是**旧 `app_key` 应用**的阶段(`completed_stages`);`appid` 应用只走到开发环境、数据库、开发权限,以及(声明了 headless 时)签名并激活到开发:
470
+ 下表是**旧 `app_key` 应用**的阶段(`completed_stages`);`appid` 应用只走到开发环境、数据库、开发权限,以及(声明了 headless 时)签名并绑定到开发:
460
471
 
461
472
  | 阶段(`completed_stages`) | 做了什么 |
462
473
  | -------------------------- | -------------------------------------------------------------------------------------------------------- |
@@ -526,31 +537,33 @@ zleap-app prepare <app_id> --version-id <version_id> --request-id $(openssl rand
526
537
  | ---------------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------- |
527
538
  | Manifest 的集合结构已定稿(之后不能改) | 检查 `manifest.json` | 同左 |
528
539
  | `check --target` 在目标部署上通过 | 命令行(需先登录) | 同左 |
529
- | (声明了集合时)开通清单前 3 步完成,运行体检全部通过 | 控制台概览(安装后通常自动 3/5) | 控制台概览(必要时手动创建 / 同步) |
530
- | (有后台)已签名、已激活开发、后台能力已允许,函数状态「可调用」 | 「版本管理」下方「开发环境:云函数激活」+ 应用窗口「权限」 | 「版本与激活」+ 应用窗口「权限」 |
540
+ | (声明了集合时)开通清单的数据 3 步完成,运行体检全部通过 | 控制台概览(只有这 3 步,安装后通常自动完成) | 控制台概览(必要时手动创建 / 同步) |
541
+ | (有后台)版本已绑定就绪发布、后台能力已允许,函数状态「可调用」 | 自动签名、自动绑定;只需在应用窗口「权限」允许后台运行 | 「版本与激活」验证并签发、激活开发 + 应用窗口「权限」 |
531
542
  | 用同一版本完成了真实读写验证(手动或 `zleap-app test`) | 应用窗口 / 验收报告 | 同左 |
532
543
  | (生产已开放时)生产环境与集合已准备好 | 首次「发布为线上版本」自动完成 | 生产门禁 7 项 +「激活到生产」或 `prepare` |
533
544
  | 已发布给同事,同事安装后能打开并读写 | 「版本管理」→「发布为线上版本」(应用中心「发现」安装) | 「发布到企业目录」/ `market-publish`(应用中心安装) |
534
545
 
535
546
  ## 常见卡点
536
547
 
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` / 「结果待确认」 | 网络中断,服务端可能已处理 | 用原操作号查询结果,**不要换个编号重新提交** | 两者 |
548
+ | 现象 | 原因 | 处理 | 适用 |
549
+ | -------------------------------------------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------- |
550
+ | 上传报 40400「appid 不存在」 | `appid` 还没在控制台创建,或抄错了 | 先在云开发控制台「创建应用」,复制它的 `appid` | `appid` |
551
+ | 上传报 40300「你不是这个应用的开发者」 | 你不是这个应用的成员 | 请应用管理员在控制台「成员」里把你加为开发者 | 两者 |
552
+ | `prepare` 报 403「只能准备本人private应用」 | 旧应用的包不是本人上传的 private 包 | 用本人上传且已安装的 private 包再准备 | 旧应用 |
553
+ | `prepare` 报 403「只能准备本人上传的版本」 | `appid` 应用传了别人上传的 `version_id` | 只准备本人上传的版本(可见性 `private` 或 `members`) | `appid` |
554
+ | 发布报 `PROD_DATABASE_NOT_READY` | 带云资源的版本第一次发布,生产数据库还没就绪 | 通常 1 分钟内就绪,稍后重新发布;持续失败到控制台「数据库」查看状态 | `appid` |
555
+ | 发布报 `UPLOADER_INACTIVE` | 这个版本的上传者账号已停用 | 请其他成员重新上传这个版本(`npm run deploy`)后再发布 | `appid` |
556
+ | 同事在应用中心看不到某个开发版本 | `appid` 应用的开发版本可见性为 `members`,只有应用成员能看到 | 把同事加为开发者;要给全企业用,在控制台「版本管理」发布为线上版本 | `appid` |
557
+ | 应用中心显示「暂不可用」 | 申请了白名单外的能力、`host_api.profile` 不是 `app-runtime/2` 等 | 应用中心 · 暂不可用(文档站 /app-center/overview#「暂不可用」是什么意思) | 两者 |
558
+ | 应用打开报「连接需要处理」/ `RESOURCE_NOT_READY` | 当前数据域没有环境或数据库未就绪 | 完成第 3 步 / ⑤(生产已开放时还要完成 ⑧) | 两者 |
559
+ | `SCOPE_FORBIDDEN`(服务端原因 `CONSENT_REQUIRED`) | 「权限」里的应用权限一项都没勾 | 勾选后「保存并重新加载」 | 两者 |
560
+ | `PUBLISHER_REQUIRED` | 非发布者访问开发数据域 | 用发布者账号调试,或完成 ⑧ / 发布线上版本后走生产数据域 | 两者 |
561
+ | `FUNCTION_RELEASE_REQUIRED` | 云函数所在版本没有绑定就绪发布(`appid` 应用正常不会出现) | 在应用窗口「权限」重新保存一次,或在「版本管理」切换一次版本,平台自动补签并绑定;仍出现请平台管理员检查签名配置,或重新上传 | `appid` |
562
+ | `FUNCTION_RELEASE_REQUIRED` | 云函数所在版本没有绑定已就绪发布 | 完成 ⑥(「版本与激活」验证并签发、激活开发) | 旧应用 |
563
+ | `ENV_FORBIDDEN`(同事打不开) | 生产已开放,但应用还没有生产环境 | `appid` 应用先发布线上版本;旧应用完成 ⑧ | 两者 |
564
+ | `COLLECTION_NOT_FOUND`(激活到生产之后) | 生产数据域里还没有集合 | 旧应用在控制台生产环境「数据库」开通或跑 `prepare`;`appid` 应用检查 `data.collections` | 两者 |
565
+ | `prepare` 在 `prod_environment` 失败 | 部署未开放生产 | 改走控制台的开发环境流程;`appid` 应用等「发布为线上版本」自动准备 | 旧应用 |
566
+ | 首次「发布为线上版本」卡在准备生产 | 部署未开放生产,带云资源的版本建不出生产环境 | 联系运维开放生产;只用宿主能力的应用不受影响 | `appid` |
567
+ | `COMMIT_UNKNOWN` / 「结果待确认」 | 网络中断,服务端可能已处理 | 用原操作号查询结果,**不要换个编号重新提交** | 两者 |
555
568
 
556
569
  完整错误码见 [状态与错误码](status-codes.md),平台未开放的能力见 平台边界与限制(文档站 /reference/limits)。