# ohpm publish发布SDK报错

#### 问题现象

**场景一：**ohpm publish发布SDK报错Invalid OHPM package repository。

错误信息如下：

```
Error Message: The "Publish" request to url "" has failed
╰→ Caused by:
Original Error: HttpCode 400 Invalid OHPM package repository.
```

**场景二：**ohpm publish发布时报错HttpCode 413 Request Entity Too Large。

报错信息如下：

```
ohpm ERROR: HttpCode 413 Request Entity Too Large.
ohpm ERROR: Publish failed, detail: The "Publish" request to url "xxxxx" has failed.
```

#### 背景知识

OHPM（OpenHarmony Package Manager）由OpenHarmony三方库中心仓网站、命令行工具、OpenHarmony三方库中心仓仓库三个部分组成，其功能如下：

*   OpenHarmony三方库中心仓网站（website）：用于检索、查看所需OpenHarmony三方库信息，也可管理关于ohpm的个人配置。
*   命令行工具（cli）：OpenHarmony三方库的包管理工具。
*   OpenHarmony三方库中心仓仓库（registry）：存储三方库软件及其元数据的仓库。

ohpm publish可以将三方库发布到OpenHarmony三方库中心仓，以便可按名称安装它。发布前，需要完成公钥私钥生成，把公钥上传服务端，并在ohpmrc文件中配置公仓的发布码和私钥路径。

#### 解决方案

*   **场景一：**此错误是因为oh-package.json5文件中的repository字段未正确配置，此为开源代码的仓库地址，需要以https|http|ftp|rtsp|mms开头。
*   **场景二：**私仓对SFTP是没有限制的，这个问题一般就是上传文件过大，导致链接的SFTP服务器报错。排查一下部署私仓，是否使用了代理服务器，导致在代理服务器的地方存在对上传文件大小的限制。再检查一下SFTP服务器的配置项，是否有针对上传文件给设置限制。SFTP服务器配置中可能存在对上传文件大小的限制。以下是一些可能的原因：
    *   文件系统限制：服务器上的文件系统本身可能对文件大小有限制。例如，FAT32文件系统限制单个文件大小为4GB。如果服务器使用的是此类文件系统，那么上传的文件大小将受到此限制。
    *   磁盘空间：服务器上的磁盘空间不足也会导致文件上传失败。因此，确保服务器有足够的磁盘空间来存储上传的文件。
    *   操作系统限制：操作系统对文件大小的限制。
    *   服务/客户端限制：检查SFTP客户端/服务端的设置选项，查找并调整文件上传大小的限制。
    *   连接稳定性：SFTP连接的稳定性和传输效率也会影响SFTP文件上传，可以适当优化网络及硬件条件。

#### 总结

1.  repository仓库地址需要以https|http|ftp|rtsp|mms开头。
2.  HttpCode服务器报错码，还没进到ohpm中，优先排查代理服务器，如果有使用类似SFTP传输的，也需要排查SFTP。