mcpField
U
uipath-coded-apps

uipath-coded-apps

github.com/uipath开发17568 次安装今天更新
代码仓库

关于 uipath-coded-apps

uipath-coded-apps 是用于构建、调试和部署 UiPath Coded Web Apps 与 Coded Action Apps 的技能,面向 UiPath 应用开发者。它涵盖 `uip codedapp` CLI、TypeScript SDK 和两类应用各自的构建与部署流程。

主要功能

  1. 01脚手架搭建 React 或 Vue 前端
  2. 02调试 UiPath Coded Apps
  3. 03使用 `uip codedapp` 打包与部署
  4. 04集成 `@uipath/uipath-typescript` SDK
  5. 05配置 Action Center 表单应用
  6. 06生成 Agent 监控与分析仪表板

适用场景

  1. 01创建部署到 UiPath Cloud 的 Web 应用
  2. 02构建用于 Action Center 人工审核的表单
  3. 03在应用中访问 UiPath 服务和数据
  4. 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.mjs
capability-registry.json
lifecycle.mjs
setup-admin-folder.mjs
assets/scripts/dashboards/flows/
build.mjs
edit.mjs
template.mjs
upgrade.mjs
assets/scripts/dashboards/tests/
regime-eject.test.mjs
resolution.test.mjs
assets/templates/
action-app-template.md
web-app-template.md
assets/templates/action-app/
app-template.css
document-tab-template.css
form-template.css
index-template.css
references/
commands-reference.md
create-action-app.md
create-web-app.md
debug.md
file-sync.md
references/dashboards/
CAPABILITY.md
references/dashboards/aesthetic/
charting.md
layout-patterns.md
references/dashboards/plugins/deploy/
impl.md
references/dashboards/primitives/
customization.md
detail-views.md
incremental-editor.md
state-file.md
tier-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-typescript SDK
  • 用户想运行完整流水线(构建 → 打包 → 发布 → 部署)
  • 用户想根据自然语言描述生成 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)。

关键规则

  1. 开始前先确认应用类型。 通过结构化选项提问(规则 18):Coded Web App — 部署到 UiPath Cloud 的自定义前端 · Coded Action App — 用于 Action Center 人工任务审核的表单。这两条路径在脚手架、重定向 URI 和发布标志上各不相同——不要猜测。
  2. 始终先检查登录状态。 执行任何云端命令前,先运行 uip login status --output json。如果尚未登录,则运行 uip login。
  3. 绝不要跳过构建步骤。 搭建脚手架后运行 npm run build(验证脚手架可以编译),并在 pack 或 push 前再次运行(生成可部署的 dist/)。每次都要验证 dist/ 是否存在。
  4. 必须按 Pack → Publish → Deploy 的顺序执行。 每一步都依赖前一步生成的输出。
  5. 重新发布时要递增版本号。 如果 Orchestrator 中已存在相同版本,发布会失败。
  6. Action 应用发布时必须使用 -t Action。 运行 uip codedapp publish -t Action(不要使用默认的 Web 类型)。
  7. 绝不要手动处理访问令牌。 不要传递、打印、解析、加载或设置缓存的访问令牌。使用 uip login 和受支持的 uip codedapp 命令;CLI 会管理身份验证。
  8. 基础 URL 必须使用 API 子域名。 使用 https://api.uipath.com,而不是 https://cloud.uipath.com。请参阅下表。
  9. vite.config.ts 必须始终设置 base: './'。 平台会处理 URL 路由——应用必须使用相对资源路径。此处不要使用路由名称或子路径。通过打包器导入静态资源(import logo from './assets/logo.png'),让 Vite 为资源添加指纹并重写基础路径。不要将资源放在 public/ 中,也不要通过以 / 为根路径的硬编码路径引用资源——这些做法会绕过基础路径重写,并导致应用部署在非根挂载路径下后返回 404。
  10. 构造运行时绝对 URL 时,使用 @uipath/uipath-typescript 中的 getAppBase()——适用于路由器 basename、图片 src、fetch 路径。部署后的应用会挂载在非根路径前缀下;以 / 为根路径的路径在本地可用,但部署后会返回 404。Vite 的 base: './' 只会修复导入时的引用。
  11. 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 检查)。
  12. 防止所有界面出现文本溢出。 请参阅 patterns.md 中的 “Preventing Text Overflow”。
  13. 编写分析、筛选器或种子数据前,先检查 DF 架构。 运行 uip df entities get <ENTITY_ID> --output json 检查字段和类型。运行时,使用应用已验证身份的会话中的 entities.getById(<id>)。DF 的行为与典型 RDBMS 不同;请参阅 sdk/data-fabric.md 中的 “Anti-shapes & gotchas”。
  14. 每次列表调用只返回一页——即使没有选项也一样。没有“获取所有内容”的方式。 这适用于 getAll、getAllRecords、queryRecordsById、getFileMetaData 等。没有选项的 getAll() 不会返回所有行;SDK 不会发送 pageSize,而服务端会应用自身的上限,并将结果包装在一个名称容易误导的 NonPaginatedResponse 中。如果某个数据源可能超过上限,要列出其中的每一行,就必须循环使用游标:while (page.hasNextPage) { page = await getAll({ cursor: page.nextCursor }) },并累积 items。单次调用后读取 result.items.length 几乎总是错误。请参阅 sdk/pagination.md。
  15. 动态数据表格必须分页,而不是在一个滚动区域中一次性倾倒所有行。 每页 25–50 条,并提供下一页/上一页/页码控件,以及 “Showing X–Y of Z” 摘要。明确用于摘要的面板(例如 “Top 10 oldest”)可以使用前 N 条 + “see all”。将 N 行全部放入无限滚动区域,不适用于运维仪表板。适用于由任何服务提供数据的表格(DF 实体、Tasks、Jobs、Conversations、Process Instances 等)。请参阅 patterns.md 中的 “Tabular Data”。
  16. 新增任何 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)。
  17. 绝不要在 action 应用中调用 sdk.initialize()。 这只适用于 Web 应用——它会启动一个无法在 iframe 中完成的交互式 PKCE 重定向。Action 应用会从配置中静默进行身份验证,该配置由 Action Center 注入:构造 new UiPath()(不带参数)并直接使用。请参阅 create-action-app.md 中的 src/uipath.ts。
  18. 绝不要要求用户输入暗号。 每当要求用户从已知选项中进行选择(应用类型、构建/编辑/部署意图、OAuth 设置、部署固定项)时,如果宿主编码 Agent 提供原生提问工具(可选选项),就通过该工具呈现结构化选项。具体方式:每个选项各占一项,包含简短的粗体标签和一行说明,解释选择该项会执行什么操作;将推荐选项放在第一项,并在其标签末尾加上“(推荐)”;最多提供 4 个选项(适用时留出一个名额用于“修改”/“取消”等退出选项)。如果候选项有 5 个或更多,或者宿主 Agent 没有提问工具,则改为呈现普通编号列表,并接受用户以数字或选项标签作答。自由文本回复必须始终有效(例如,要求更改计划),并优先于选项。**例外——绝不要在包含长篇输出的同一条回复中提问:**计划审批关卡有意采用自由文本方式(计划以“确认或告诉我需要更改的内容”结束);结构化提问只在后续的简短回合中发出。请参阅 references/dashboards/plugins/build/impl.md。
  19. 绝不要猜测 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 没有输出即确认不存在;应将确实缺失的功能视为不受支持(改用文档中说明的替代方案),不要继续搜索打包文件。
  20. 只有在 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 的应用
生成仪表板根据自然语言描述生成分析或管理视图

任务导航

我想要……阅读此文档
创建新的 Coded Web Appreferences/create-web-app.md
创建新的 Coded Action Appreferences/create-action-app.md
调试身份验证或配置问题references/debug.md
将代码推送到 Studio Web 或从中拉取代码references/file-sync.md
打包并部署references/pack-publish-deploy.md
完整的 CLI 命令参考references/commands-reference.md
嵌入 DU Validation Station 小组件references/widgets/validation-station.md
嵌入 Conversational Agent 聊天小组件references/widgets/conversational-agent-chat.md
嵌入 Data Fabric DataTable 小组件references/widgets/datatable.md
嵌入多文件存储桶上传小组件references/widgets/multi-file-upload.md
嵌入 PDF 查看器小组件references/widgets/pdf-viewer.md
添加外部 IdP 登录按钮(Google/SAML)references/widgets/external-auth.md
SDK:SDK 服务的 OAuth 作用域references/oauth-scopes.md
SDK:导入路径与子路径导出references/sdk/imports.md
SDK:资产、队列、存储桶、流程、作业、附件references/sdk/orchestrator.md
SDK:Data Fabric(实体、ChoiceSets)references/sdk/data-fabric.md
SDK:Maestro(流程、案例)references/sdk/maestro.md
SDK:Action Center(任务)references/sdk/action-center.md
SDK:Conversational Agentreferences/sdk/conversational-agent.md
SDK:Agent 反馈references/sdk/feedback.md
SDK:分页references/sdk/pagination.md
SDK:Agent 与 Agent Memory(Insights RTM)references/sdk/agents.md
SDK:Agent 跟踪记录(Insights RTM)references/sdk/traces.md
SDK:治理 — 策略评估(Insights API)references/sdk/governance.md
SDK:Agent 治理决策 — 运行时合规(Insights RTM)references/sdk/governance-traces.md
UI 模式(轮询、BPMN、HITL、文本溢出、表格分页)references/patterns.md
通过 NLP 生成管理仪表板references/dashboards/CAPABILITY.md

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_IDuip codedapp push / uip codedapp pullStudio 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 — 原样使用

快速部署(完整流程)

步骤之间不要暂停并询问“是否继续?”——请执行完整流程。只有在需要身份验证凭据或应用名称时才停止。

  1. 身份验证 — 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。
  2. 构建 — npm run build。通过 ls dist/ 验证。
  3. 打包 — uip codedapp pack dist -n <name> --version <version>。此命令会生成 .uipath/<name>.<version>.nupkg。如果之前发布过,请提升版本号。
  4. 发布 — uip codedapp publish(对于操作应用,添加 -t Action)。通过 cat .uipath/app.config.json 验证。
  5. 部署 — 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 不是数字。

完成情况输出

完成任务后,只报告与实际完成的工作相关的内容:

  1. 完成的工作——创建、编辑或删除的文件(列出路径);运行的 CLI 命令
  2. 到达的阶段——以下之一:scaffolded / built / packed / published / deployed
  3. 生成的产物(仅报告实际存在的产物):
    • dist/——如果运行了 npm run build
    • .uipath/<name>.<version>.nupkg——如果运行了 pack
    • .uipath/app.config.json 中包含 deploymentId——如果运行了 publish
    • 在线部署 URL(app.config.json 中的 appUrl)——如果运行了 deploy
    • 外部应用客户端 ID——如果本次会话创建了该 ID
  4. 后续步骤,根据任务停止的位置确定:
    • **仅完成 scaffolded:**运行 cd <app-name> && npm run dev,在本地启动
    • **已构建但未打包:**用户需要部署时,即可运行 uip codedapp pack
    • **已发布但未部署:**运行 uip codedapp deploy 上线
    • **已部署(Web):**打开/分享部署 URL;验证登录流程
    • **已部署(Action):**应用将在 Action Center 中呈现为人工任务;这些任务由路由名称匹配的 Maestro/Agent 工作流触发
  5. 未解决的问题——任何身份验证失败、范围不匹配、缺少文件夹密钥、跳过的步骤或尚未解决的错误

如果用户要求执行后续阶段但该阶段被跳过(例如,用户要求部署,但只成功完成了 publish),请在后续步骤部分明确指出。

反模式

这些陷阱尚未在「关键规则」中提及。对于以正面要求形式表述的规则,请参阅顶部的 关键规则 部分。

  • 不要从软件包根目录导入服务类——请使用子路径(例如,@uipath/uipath-typescript/assets)。
  • 不要使用已弃用的点链式调用 sdk.entities.getAll()——请使用构造函数依赖注入:new Entities(sdk)。
  • 不要在 publish 和 deploy 之间删除 .uipath/——deploy 会读取 publish 写入的 app.config.json。

评论

支持 Markdown