namespace org 中的 ECA 如何解决 2GP 打包报错?
可以使用 namespace org,需启用跨组织打包配置
可以将符合条件的 namespace org 作为 ECA 的源组织,通过关联的 Dev Hub 创建 2GP managed package。如果 ECA 创建在非 Dev Hub org 中,需要在创建包版本时使用的定义文件里设置 enablePackageEcaOauthFromDevOrg: true。Salesforce 官方文档指出,缺少这一设置会在创建包版本时触发有关 ephemeral orgs 的错误。官方配置说明
原问题没有提供组织类型、项目配置或执行命令,因此还不能确定实际缺少哪一步。
为什么源组织不是临时组织,也可能收到这个错误?
创建 2GP 包时,日志中出现了以下错误:
ExternalClientApplication. External client apps that are created in ephemeral orgs can't be packaged.
遇到这条错误时,需要检查 ECA 的实际来源,以及非 Dev Hub 源组织的打包配置。仅凭错误提示,不能认定 namespace org 本身是临时组织。
对于使用 OAuth 的 ECA,全局 OAuth 设置包含敏感凭据,必须保存在能够长期存在的非临时组织中,不能随包分发。关联到源应用的订阅组织会依赖这些设置。ECA 关联机制说明
如何配置 namespace org 和 Dev Hub?
按以下顺序检查:
- 在作为源组织的 namespace org 中创建 ECA,将
Distribution State设为Packaged。 - 在负责打包的 Dev Hub 中启用 2GP,并通过
Namespace Registry关联源组织的 namespace。 - 将 ECA 元数据检索到 Salesforce DX 项目,确认项目使用对应的 namespace。
- 在
config/project-scratch-def.json中合并以下设置,并在创建包版本时通过-f显式指定该文件。
{
"settings": {
"externalClientAppSettings": {
"enablePackageEcaOauthFromDevOrg": true
}
}
}
保留定义文件中的其他配置。如果已有 settings,将新字段合并进去。这是 Salesforce 针对非 Dev Hub 源组织提供的打包流程。官方操作步骤
创建包和包版本的命令示例
以下示例假设 Salesforce DX 项目、namespace 和待打包元数据均已准备好,PackagingHub 是已登录的 Dev Hub 别名,包目录为 force-app。
首次创建包时执行:
sf package create --name MyEcaPackage --package-type Managed --path force-app --target-dev-hub PackagingHub
随后创建包版本,传入刚才修改的定义文件:
sf package version create --package MyEcaPackage --target-dev-hub PackagingHub --installation-key "REPLACE_WITH_INSTALLATION_KEY" -f config/project-scratch-def.json -w 15
将安装密钥占位符替换为实际值。如果已有包,可以直接使用现有包名称或 ID 创建版本。命令结构参见官方打包示例。
仍然失败时检查什么?
- 确认实际执行的命令读取了修改后的定义文件,尤其要检查 CI 中的
-f路径。 - 检查
.eca-meta.xml中的orgScopedExternalApp。其格式为[Organization_ID]:[External Client App Name],应核对是否对应预期的源组织和应用。不要随意替换组织 ID 来绕过错误。字段说明 - 检查包目录是否误包含
ExtlClntAppGlobalOauthSettings。它保存敏感 OAuth 信息,不能打包或加入源码仓库;可打包的 OAuth 配置属于ExtlClntAppOauthSettings。2GP 组件说明 - 如果源组织、namespace 关联和定义文件都正确,保留完整的包版本创建日志,向 Salesforce Support 核查组织资格或平台问题。现有信息不足以认定这是平台缺陷。
ISV 也可以采用 Salesforce 官方建议的另一条路径:直接在 PBO(Partner Business Org)的 Dev Hub 中定义 ECA,再检索到项目并打包测试。ISV 打包建议
备注:内容仅供参考。
