关于 uipath-coded-apps
uipath-coded-apps 是用于构建、调试和部署 UiPath Coded Web Apps 与 Coded Action Apps 的技能,面向 UiPath 应用开发者。它涵盖 `uip codedapp` CLI、TypeScript SDK 和两类应用各自的构建与部署流程。
主要功能
- 01脚手架搭建 React 或 Vue 前端
- 02调试 UiPath Coded Apps
- 03使用 `uip codedapp` 打包与部署
- 04集成 `@uipath/uipath-typescript` SDK
- 05配置 Action Center 表单应用
- 06生成 Agent 监控与分析仪表板
适用场景
- 01创建部署到 UiPath Cloud 的 Web 应用
- 02构建用于 Action Center 人工审核的表单
- 03在应用中访问 UiPath 服务和数据
- 04生成 Agent 运行状况与用量仪表板
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ uipath/ skills --skill uipath-coded-apps安装后在 Claude Code 中输入/uipath-coded-apps确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/scripts/dashboards/build-dashboard.mjscapability-registry.jsonlifecycle.mjssetup-admin-folder.mjsassets/scripts/dashboards/flows/build.mjsedit.mjstemplate.mjsupgrade.mjsassets/scripts/dashboards/tests/regime-eject.test.mjsresolution.test.mjsassets/templates/action-app-template.mdweb-app-template.mdassets/templates/action-app/app-template.cssdocument-tab-template.cssform-template.cssindex-template.cssreferences/commands-reference.mdcreate-action-app.mdcreate-web-app.mddebug.mdfile-sync.mdreferences/dashboards/CAPABILITY.mdreferences/dashboards/aesthetic/charting.mdlayout-patterns.mdreferences/dashboards/plugins/deploy/impl.mdreferences/dashboards/primitives/customization.mddetail-views.mdincremental-editor.mdstate-file.mdtier-resolution.md详细介绍
UiPath Coded Apps
使用 uip codedapp CLI 和 @uipath/uipath-typescript SDK 构建、调试和部署 UiPath Coded Web Applications 与 Coded Action Apps。
何时使用此技能
- 用户想要构建、调试或部署 UiPath Coded Web App 或 Coded Action App
- 用户询问
uip codedapp命令、.uipath/目录、app.config.json或action-schema.json - 用户想为 UiPath Cloud 或 Action Center 表单搭建脚手架,创建新的 React/Vue 前端
- 用户询问的应用 UI 可由预构建的 UiPath 小组件实现:审核/更正 Document Understanding 提取结果(Validation Station)、与对话式 Agent 聊天、在网格中浏览/编辑 Data Fabric 实体、将文件上传到存储桶、显示 PDF,或使用外部 IdP(Google/SAML)登录
- 用户想要在本地和 Studio Web 之间推送/拉取源代码
- 用户想在 coded app 中使用
@uipath/uipath-typescriptSDK - 用户想运行完整流水线(构建 → 打包 → 发布 → 部署)
- 用户想根据自然语言描述生成 Agent 监控/分析仪表板,例如“显示 Agent 健康状况、错误率、调用量、延迟、活跃 Agent、KPI、治理指标或消耗趋势”
- 用户说“构建/创建/生成仪表板”,描述要可视化的指标,或询问 Agent 可观测性、运营或成本视图
关于应用的 JS/TS 函数后端——编写应用所调用的 defineFunction 端点、令牌、CORS、本地双服务器开发循环 → uipath-functions。
应用类型
| 类型 | 说明 | 主要区别 |
|---|---|---|
| Coded Web App | 托管在 UiPath CDN 上的 React/Vue/其他前端 | 用户通过 URL 访问的应用 |
| Coded Action App | 与 UiPath Action Center 连接的 React 表单 | 在 Maestro/Agent 工作流中的人工任务审核界面内呈现 |
两种生命周期,两个脚手架入口。
- 独立 coded app:使用
create-vite搭建脚手架,并复制 create-web-app.md / create-action-app.md 中的确切命令(关键规则 20)。没有project.uiproj/webAppManifest.json——这些是解决方案成员相关的文件,独立应用不需要它们。通过uip codedapp pack→uip codedapp publish(Action App 使用-t Action)→uip codedapp deploy进行部署。这是本技能其余部分介绍的经典单应用生命周期。- 解决方案内的 coded app:在
.uipx解决方案内部运行uip codedapp init。Init 会写入project.uiproj(ProjectType: "AppV2")和webAppManifest.json,将运行时和构建文件放在source/dist/下,在.uipx中自动将项目注册为Type: "AppV2",并生成resources/solution_folder/app/{Coded,CodedAction}/。从此之后,该应用就是解决方案的一部分——uip solution pack会将其.nupkg打包,uip solution deploy run会在部署文件夹中对其进行预配。对于已在.uipx中注册的 coded app,不要运行uip codedapp pack/publish/deploy——这会绕过解决方案的部署配置(外部客户端 ID、路由名称、Action 架构),并导致软件包重复注册。uip solution projects add/uip solution projects import也可以注册现有的 AppV2 文件夹,并通过读取webAppManifest.config.isActionApp来选择Coded/CodedAction子类型。有关解决方案端的生命周期,请参阅 /uipath:uipath-solution。**
uip codedapp init不会搭建 React 项目脚手架。**它只会写入静态的dist/index.html和三个元数据文件,不会生成任何源项目,因此它不是独立 coded app 的脚手架入口——要搭建脚手架,请使用 create-web-app.md 中的create-vite命令(关键规则 20)。
关键规则
- 开始前先确认应用类型。 通过结构化选项提问(规则 18):Coded Web App — 部署到 UiPath Cloud 的自定义前端 · Coded Action App — 用于 Action Center 人工任务审核的表单。这两条路径在脚手架、重定向 URI 和发布标志上各不相同——不要猜测。
- 始终先检查登录状态。 执行任何云端命令前,先运行
uip login status --output json。如果尚未登录,则运行uip login。 - 绝不要跳过构建步骤。 搭建脚手架后运行
npm run build(验证脚手架可以编译),并在pack或push前再次运行(生成可部署的dist/)。每次都要验证dist/是否存在。 - 必须按 Pack → Publish → Deploy 的顺序执行。 每一步都依赖前一步生成的输出。
- 重新发布时要递增版本号。 如果 Orchestrator 中已存在相同版本,发布会失败。
- Action 应用发布时必须使用
-t Action。 运行uip codedapp publish -t Action(不要使用默认的Web类型)。 - 绝不要手动处理访问令牌。 不要传递、打印、解析、加载或设置缓存的访问令牌。使用
uip login和受支持的uip codedapp命令;CLI 会管理身份验证。 - 基础 URL 必须使用 API 子域名。 使用
https://api.uipath.com,而不是https://cloud.uipath.com。请参阅下表。 vite.config.ts必须始终设置base: './'。 平台会处理 URL 路由——应用必须使用相对资源路径。此处不要使用路由名称或子路径。通过打包器导入静态资源(import logo from './assets/logo.png'),让 Vite 为资源添加指纹并重写基础路径。不要将资源放在public/中,也不要通过以/为根路径的硬编码路径引用资源——这些做法会绕过基础路径重写,并导致应用部署在非根挂载路径下后返回 404。- 构造运行时绝对 URL 时,使用
@uipath/uipath-typescript中的getAppBase()——适用于路由器 basename、图片src、fetch路径。部署后的应用会挂载在非根路径前缀下;以/为根路径的路径在本地可用,但部署后会返回 404。Vite 的base: './'只会修复导入时的引用。 uip codedapp deploy必须以非交互方式运行。 将文件夹密钥作为--folder-key <GUID>传入(或使用UIPATH_FOLDER_KEY=<GUID>环境变量前缀——两种方式都可以)。在非 TTY 环境(CI、Agent shell)中,交互式文件夹选择器会失败。如果deploy因not found among folders accessible to your account而拒绝密钥,但uip or folders list --all --name "<name>"返回了该文件夹,则不带--folder-key重新运行一次:UIPATH_FOLDER_KEY=<GUID> uip codedapp deploy …。对于文件夹很多的账户,标志的预检查会使用不完整的账户文件夹列表副本,因此密钥本身没问题;等待或重试相同调用都无济于事。请参阅 pack-publish-deploy.md。如果用户提供的是文件夹名称,则使用服务端筛选器uip or folders list --all --name "<name>" --output json进行解析,选取Name与目标名称完全相同的行,然后读取其Key(普通列表每页 50 条,且--name是包含匹配,必须搭配--all,因此绝不能直接取第一行)。个人工作区不在--all结果中——应从默认的uip or folders list --output json中解析,其中Type == "Personal"。若要部署到新文件夹,请先使用uip or folders create "<NAME>" --output json创建文件夹,并读取Data.Key。uip or ...命令需要 Orchestrator 工具——使用uip tools install @uipath/orchestrator-tool安装一次(先用uip tools list检查)。- 防止所有界面出现文本溢出。 请参阅 patterns.md 中的 “Preventing Text Overflow”。
- 编写分析、筛选器或种子数据前,先检查 DF 架构。 运行
uip df entities get <ENTITY_ID> --output json检查字段和类型。运行时,使用应用已验证身份的会话中的entities.getById(<id>)。DF 的行为与典型 RDBMS 不同;请参阅 sdk/data-fabric.md 中的 “Anti-shapes & gotchas”。 - 每次列表调用只返回一页——即使没有选项也一样。没有“获取所有内容”的方式。 这适用于
getAll、getAllRecords、queryRecordsById、getFileMetaData等。没有选项的getAll()不会返回所有行;SDK 不会发送pageSize,而服务端会应用自身的上限,并将结果包装在一个名称容易误导的NonPaginatedResponse中。如果某个数据源可能超过上限,要列出其中的每一行,就必须循环使用游标:while (page.hasNextPage) { page = await getAll({ cursor: page.nextCursor }) },并累积items。单次调用后读取result.items.length几乎总是错误。请参阅 sdk/pagination.md。 - 动态数据表格必须分页,而不是在一个滚动区域中一次性倾倒所有行。 每页 25–50 条,并提供下一页/上一页/页码控件,以及 “Showing X–Y of Z” 摘要。明确用于摘要的面板(例如 “Top 10 oldest”)可以使用前 N 条 + “see all”。将 N 行全部放入无限滚动区域,不适用于运维仪表板。适用于由任何服务提供数据的表格(DF 实体、Tasks、Jobs、Conversations、Process Instances 等)。请参阅 patterns.md 中的 “Tabular Data”。
- 新增任何 SDK 方法调用时,都要确认已配置的 OAuth scope 已包含所需 scope——仪表板和 Web 应用都会从
uipath.json读取scope键。写操作、操作方法(Jobs.stop、Tasks.complete、ProcessInstances.cancel等)或首次使用新服务,通常需要比只读流程更宽泛的 scope。scope 不匹配会导致首次调用时静默返回401/403。有关 scope 组合及逐方法查询流程,请参阅 oauth-scopes.md(逐方法表随 SDK 软件包一同提供,路径为node_modules/@uipath/uipath-typescript/docs/oauth-scopes.md)。 - 绝不要在 action 应用中调用
sdk.initialize()。 这只适用于 Web 应用——它会启动一个无法在 iframe 中完成的交互式 PKCE 重定向。Action 应用会从配置中静默进行身份验证,该配置由 Action Center 注入:构造new UiPath()(不带参数)并直接使用。请参阅 create-action-app.md 中的src/uipath.ts。 - 绝不要要求用户输入暗号。 每当要求用户从已知选项中进行选择(应用类型、构建/编辑/部署意图、OAuth 设置、部署固定项)时,如果宿主编码 Agent 提供原生提问工具(可选选项),就通过该工具呈现结构化选项。具体方式:每个选项各占一项,包含简短的粗体标签和一行说明,解释选择该项会执行什么操作;将推荐选项放在第一项,并在其标签末尾加上“(推荐)”;最多提供 4 个选项(适用时留出一个名额用于“修改”/“取消”等退出选项)。如果候选项有 5 个或更多,或者宿主 Agent 没有提问工具,则改为呈现普通编号列表,并接受用户以数字或选项标签作答。自由文本回复必须始终有效(例如,要求更改计划),并优先于选项。**例外——绝不要在包含长篇输出的同一条回复中提问:**计划审批关卡有意采用自由文本方式(计划以“确认或告诉我需要更改的内容”结束);结构化提问只在后续的简短回合中发出。请参阅
references/dashboards/plugins/build/impl.md。 - 绝不要猜测 SDK 方法签名——请读取已安装的类型定义。 方法名称、参数、返回类型和用法示例的权威参考是
node_modules/@uipath/uipath-typescript/dist/<subpath>/index.d.ts(包含完整 JSDoc;与已安装的 SDK 版本完全匹配)。在本会话中调用尚未使用过的服务前,请先读取其.d.ts文件。如果缺少node_modules,请先运行安装步骤——没有它应用无法构建。references/sdk/*.md文件有意不列出方法签名;它们只介绍 scope、调用惯例以及类型定义无法表达的陷阱。请参阅 references/sdk/imports.md 中有关缺失能力的处理流程。界限:读取.d.ts,绝不要读取编译后的打包文件。dist/*.mjs/*.js是经过压缩的实现代码,不是 API 文档——读取它们只会走入死胡同。grep 没有输出即确认不存在;应将确实缺失的功能视为不受支持(改用文档中说明的替代方案),不要继续搜索打包文件。 - 只有在
src/main.tsx存在时,脚手架才是 React 应用——安装任何内容前先断言这一点。 两种应用类型都应通过复制 create-web-app.md Step 3.2 或 create-action-app.md 中的单条create-vite命令来搭建脚手架。该命令传入--no-interactive——否则create-vite会停在 linter 提示处;无人能够回答时,它会在什么都没创建的情况下以退出码0结束——并以一个输出SCAFFOLD_OK的node检查作为结尾。绝不要使用npm create vite形式——npm create需要一个裸的--分隔符才能传递标志,而分隔符丢失或损坏时,npm 会吞掉--template,导致create-vite静默搭建其vanilla TypeScript 模板。绝不要根据退出码或输出判断脚手架是否正确:遇到模板解析错误、无法显示 linter 提示或非空目标目录上的Operation cancelled时,create-vite都会以退出码0结束。此技能不会显式安装react,所以错误的模板会在几分钟后以看似无关的构建失败显现。失败时使用--overwrite重新搭建脚手架;绝不要手动将 vanilla 脚手架改造成 React 脚手架。
消歧 — 应用与仪表板
看到以下内容时,直接转到应用工作流(见下文各节):
web app、action app、codedapp、app.config.json、action-schema.json、
scaffold app、deploy app、pack、publish、push、pull、debug app
看到以下内容时,直接转到 references/dashboards/CAPABILITY.md:
dashboard、analytics、KPI、metrics、Insights、observability、
admin console、report、chart、trend、governance report、agent metrics
意图不明确时 — 以结构化选项的形式询问“哪项符合您的目标?”(规则 18):
| 选项 | 说明 |
|---|---|
| 构建或修改 Web App / Action App | 搭建 UI、表单或可部署到 Automation Cloud 的应用 |
| 生成仪表板 | 根据自然语言描述生成分析或管理视图 |
任务导航
CLI 设置
# Fresh macOS/Linux machine: installs Node.js >= 20, uip, agent skills, .NET SDK 8.0, and Python 3.11-3.14
curl -fsSL https://download.uipath.com/uipath-cli/install.sh | bash
# Resolve the CLI binary before using it
UIP=$(command -v uip 2>/dev/null || true)
if [ -z "$UIP" ] && command -v npm >/dev/null 2>&1; then
UIP="$(npm root -g 2>/dev/null | sed 's|/node_modules$||')/bin/uip"
fi
if [ -z "$UIP" ] || [ ! -x "$UIP" ]; then
echo "UiPath CLI not found after bootstrap. Update PATH for this host, then rerun this step." >&2
exit 2
fi
$UIP --version
# Install the coded apps tool
$UIP tools install @uipath/codedapp-tool
# Install the Orchestrator tool (needed to resolve folder name → key for deploy)
$UIP tools install @uipath/orchestrator-tool
# Verify both are installed
$UIP tools list
Windows PowerShell 全新机器设置:
irm https://download.uipath.com/uipath-cli/install.ps1 | iex
在执行任何云端命令前先进行身份验证:
uip login status --output json # check if logged in
uip login # interactive OAuth (opens browser)
uip login --authority "<AUTHORITY_URL>" # non-default host (Automation Suite, dedicated)
# Client-credentials (headless/CI) — scope MUST name one Orchestrator scope AND
# the two Apps-service scopes. Neither set covers the other:
# OR.Default → Orchestrator
# Apps.Read Apps.Write → Apps-service registration in `uip codedapp publish`
# Do NOT substitute granular Orchestrator scopes (OR.Folders/OR.Execution/
# OR.Administration) for OR.Default.
# Credentials come from env vars via the CLI's env.<NAME> syntax — never inline.
uip login \
--client-id env.UIPATH_CLIENT_ID \
--client-secret env.UIPATH_CLIENT_SECRET \
--organization <org> \
--tenant <tenant> \
--scope "OR.Default Apps.Read Apps.Write" \
--authority "<AUTHORITY_URL>" # omit --authority for cloud.uipath.com
切勿在对话中处理客户端密钥。 不要要求用户将其粘贴到聊天中,不要将其写入命令行或文件,也不要回显。如果未设置
UIPATH_CLIENT_ID/UIPATH_CLIENT_SECRET,请让用户在自己的 shell 中导出这些变量,然后运行上述命令。
uip login会话范围与应用的运行时 OAuth 范围相互独立。uipath.json中的范围是已部署应用在运行时请求的范围(请参阅 oauth-scopes.md)。上述uip login命令中的--scope是CLI 会话在调用 Apps 注册 API 时所需的范围,这发生在uip codedapp publish期间。uip codedapp publish会执行两项操作:上传包(需要OR.Default)以及注册编码应用(需要Apps.Read Apps.Write)。有关各类失败的表现,请参阅 debug.md。
SDK 配置(Web 应用)
Web 应用使用 new UiPath() 初始化 SDK(不带配置)。运行时,SDK 会从 <meta name="uipath:*"> 标签中读取 clientId、scope、orgName、tenantName、baseUrl 和 redirectUri。在本地开发期间,@uipath/coded-apps-dev 会从 uipath.json(已提交)注入这些标签;该文件是唯一的配置来源,包含 clientId、scope、orgName、tenantName、baseUrl 和 redirectUri(本地使用的 Vite 开发 URL)。在生产环境中,UiPath 平台会直接注入相同的标签。
要更改这些值,请编辑 uipath.json。
CLI 环境变量
| 变量 | 使用方 | 说明 |
|---|---|---|
UIPATH_PROJECT_ID | uip codedapp push / uip codedapp pull | Studio Web 项目 ID |
各环境的 Base URL — 根据用户登录的门户主机确定(uip login status --output json → Data.BaseUrl):
| 门户主机 | 正确的 Base URL |
|---|---|
https://cloud.uipath.com(默认) | https://api.uipath.com |
https://<PREFIX>.uipath.com(其他任何 UiPath 托管的门户) | https://<PREFIX>.api.uipath.com |
| 任何其他主机(Automation Suite、自定义主机) | 用户提供的 API URL — 原样使用 |
快速部署(完整流程)
步骤之间不要暂停并询问“是否继续?”——请执行完整流程。只有在需要身份验证凭据或应用名称时才停止。
- 身份验证 —
uip login status --output json。如果尚未登录,请询问用户使用的环境并运行uip login。使用客户端凭据(无头环境/CI)时,请使用--scope "OR.Default Apps.Read Apps.Write"——这三个名称缺一不可:OR.Default用于 Orchestrator,Apps.Read和Apps.Write用于uip codedapp publish中的 Apps-service 注册。External Application 本身只需要Apps.Read和Apps.Write;OR.Default会自动授予,无法在门户中选择,因此要在--scope中指定。如果发布或部署随后失败,请参阅 debug.md。 - 构建 —
npm run build。通过ls dist/验证。 - 打包 —
uip codedapp pack dist -n <name> --version <version>。此命令会生成.uipath/<name>.<version>.nupkg。如果之前发布过,请提升版本号。 - 发布 —
uip codedapp publish(对于操作应用,添加-t Action)。通过cat .uipath/app.config.json验证。 - 部署 —
uip codedapp deploy -n <name> --folder-key <GUID>。从所选文件夹解析 GUID:个人工作区(Type == "Personal")、已有的命名文件夹,或刚通过uip or folders create创建的文件夹——使用uip or folders list --output json。仪表板还需要选择一种部署模式(standalone / governance-pinned / governance),该模式会设置--tags;请参阅 dashboards deploy impl。切勿让命令进入交互模式。如果部署因某个键“not found among folders accessible to your account”而失败,而uip or folders list --all --name能返回该键,请改用UIPATH_FOLDER_KEY=<GUID>前缀重试一次,而不是使用--folder-key——不要等待或循环重试(规则 11)。将应用 URL 分享给用户。**CLI 报告成功即表示部署完成——不要轮询或使用curl检查应用 URL。**激活会在部署后延迟几分钟,因此新 URL 返回 404/503 是预期情况,无法证明任何问题;等待只会浪费时间。
SDK 模块导入
请参阅 references/sdk/imports.md,了解查找流程(子路径和类需从已安装的包中发现——ls node_modules/@uipath/uipath-typescript/dist/)、类型导入约定和反模式示例。核心规则列于下方的反模式部分。
关键概念
应用配置(.uipath/app.config.json)
由 publish 创建,供 deploy 使用。包含 appName、systemName、appType、deploymentId、appUrl。在发布和部署之间不要删除 .uipath/。
操作架构(action-schema.json)
操作应用定义了表单与 Maestro/Agent 工作流之间的数据约定,包含四个部分:inputs(来自自动化的只读数据)、outputs(用户填写的字段)、inOuts(预填但可编辑的字段)和 outcomes(如 Approve/Reject 的提交按钮)。
故障排除
详细诊断步骤请参阅 references/debug.md。
| 错误 | 原因 | 修复方法 |
|---|---|---|
Not authenticated | 没有有效会话 | 运行 uip login |
dist/ not found | 应用尚未构建 | 运行 npm run build |
Published app with package name '<name>' and version '<version>' already exists | 同名同版本的应用已发布(注册会拒绝重复项) | 增加 --version 的版本号,然后重新发布 |
Folder key required / 部署卡在提示处 | CLI 部署缺少文件夹 | 通过 uip or folders list --output json 将文件夹名称解析为密钥(匹配 Name,读取 Key),然后运行 uip codedapp deploy --folder-key <GUID> ...。请参阅 pack-publish-deploy.md。 |
Folder key '<GUID>' was not found among folders accessible to your account(文件夹存在) | --folder-key 预检查使用了不完整的账户文件夹列表副本 | 不带 --folder-key,以 UIPATH_FOLDER_KEY=<GUID> uip codedapp deploy ... 的形式重新运行一次;切勿等待后重试(规则 11)。请参阅 pack-publish-deploy.md。 |
No packages found | .uipath/ 中没有 .nupkg | 先运行 pack |
| 登录失败 / 重定向错误 | OAuth 配置错误 | 请参阅 debug.md |
| API 调用失败,出现 401/CORS | 基础 URL 错误 | 使用 https://api.uipath.com,而不是 cloud.uipath.com |
CLI 和 SDK 使用的文件夹标识符名称不同。 CLI 使用
UIPATH_FOLDER_KEY/--folder-key(字符串),且仅适用于uip codedapp deploy。SDK 方法使用不同的参数:Maestro 服务(MaestroProcesses、ProcessInstances、Cases)使用folderKey(GUID 字符串),Orchestrator 服务(Assets、Queues、Buckets、Processes)使用folderId(数字)。不要将 CLI 环境变量传入 SDK 调用。如需将 Maestro 的folderKey转换为 Orchestrator 的folderId,请参阅 sdk/maestro.md——并且切勿使用parseInt(folderKey),GUID 不是数字。
完成情况输出
完成任务后,只报告与实际完成的工作相关的内容:
- 完成的工作——创建、编辑或删除的文件(列出路径);运行的 CLI 命令
- 到达的阶段——以下之一:scaffolded / built / packed / published / deployed
- 生成的产物(仅报告实际存在的产物):
dist/——如果运行了npm run build.uipath/<name>.<version>.nupkg——如果运行了pack.uipath/app.config.json中包含deploymentId——如果运行了publish- 在线部署 URL(
app.config.json中的appUrl)——如果运行了deploy - 外部应用客户端 ID——如果本次会话创建了该 ID
- 后续步骤,根据任务停止的位置确定:
- **仅完成 scaffolded:**运行
cd <app-name> && npm run dev,在本地启动 - **已构建但未打包:**用户需要部署时,即可运行
uip codedapp pack - **已发布但未部署:**运行
uip codedapp deploy上线 - **已部署(Web):**打开/分享部署 URL;验证登录流程
- **已部署(Action):**应用将在 Action Center 中呈现为人工任务;这些任务由路由名称匹配的 Maestro/Agent 工作流触发
- **仅完成 scaffolded:**运行
- 未解决的问题——任何身份验证失败、范围不匹配、缺少文件夹密钥、跳过的步骤或尚未解决的错误
如果用户要求执行后续阶段但该阶段被跳过(例如,用户要求部署,但只成功完成了 publish),请在后续步骤部分明确指出。
反模式
这些陷阱尚未在「关键规则」中提及。对于以正面要求形式表述的规则,请参阅顶部的 关键规则 部分。
- 不要从软件包根目录导入服务类——请使用子路径(例如,
@uipath/uipath-typescript/assets)。 - 不要使用已弃用的点链式调用
sdk.entities.getAll()——请使用构造函数依赖注入:new Entities(sdk)。 - 不要在
publish和deploy之间删除.uipath/——deploy会读取publish写入的app.config.json。