首页 > 解决方案 > 设置 Nexus npm:在仪表板上上传 tar 文件时出现空指针异常

问题描述

在尝试上传简单的 js 包时,当我在 nexus 仪表板上查看记录器时收到以下错误堆栈跟踪:

2018-06-13 16:31:16,284-0400 ERROR [qtp139199987-18792] admin org.sonatype.nexus.extdirect.internal.ExtDirectServlet - Failed to invoke action method: coreui_Upload.doUpload, java-method: org.sonatype.nexus.coreui.UploadComponentComponent.doUpload
java.lang.NullPointerException: null
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:770)
at com.sonatype.nexus.repository.npm.internal.NpmPackageId.parse(NpmPackageId.java:129)
at com.sonatype.nexus.repository.npm.internal.NpmMetadataUtils.createRepositoryPath(NpmMetadataUtils.java:195)
at com.sonatype.nexus.repository.npm.NpmUploadHandler.lambda$0(NpmUploadHandler.java:84)
at org.sonatype.nexus.transaction.OperationPoint.proceed(OperationPoint.java:64)
at org.sonatype.nexus.transaction.TransactionalWrapper.proceedWithTransaction(TransactionalWrapper.java:56)
at org.sonatype.nexus.transaction.Operations.transactional(Operations.java:200).....

标签: npmnexus

解决方案


使用 npm 设置 Nexus 时要采取的步骤:

配置

  1. 在此处下载 Nexus OSS
  2. 解压 tar 文件并启动 cd /NEXUS_FOLDER/nexus ./bin/nexus start
  3. 打开浏览器输入http://localhost:8081/。登录(默认用户名=admin/密码=admin123)
  4. 单击设置 -> 存储库 -> 创建存储库

*存储库如何工作:* 存储库分为三种类型:

  • 托管存储库:由 nexus 托管的存储库。(您的内部库)。

    1. 创建存储库 -> 选择 npm(hosted) -> 输入名称 -> 允许重新部署 -> 创建存储库
  • 代理存储库:在 npm 中,您不能从不同的存储库服务器下载包。因此,要下载公共 npm 包,您必须创建一个代理服务器。

    1. 创建存储库 -> 选择 npm(proxy) -> 输入名称 -> 远程存储 -> 输入http://registry.npmjs.org -> 保存
  • 组存储库:组存储库允许您将多个存储库和具有相同存储库格式的其他存储库组组合在一个存储库组中。然后,这个单一组和相关联的 URL 可以用作从多个存储库中获取的特定格式的所有组件的单一访问点。

    1. 创建仓库 -> 选择 npm(group) -> 成员仓库 -> 添加之前创建的两个仓库 -> 保存

    2. 设置 -> 在左侧菜单 -> 领域 -> 将 npm Bearer Token Realm 添加到活动状态

将包推送到存储库

  1. 现在转到项目文件夹类型 npm init 的根目录 -> 创建包 json -> 输入名称/版本值

  2. 在项目文件夹类型根目录的终端上:npm set registry http://localhost:8081/repository/[your-hosted-repo-name]/

  3. npm adduser --registry= http://localhost:8081/repository/[your-hosted-repo-name]。输入用户名/密码/电子邮件(默认:admin/admin123/[您的电子邮件])
  4. npm publish --registry http://localhost:8081/repository/[your-hosted-repo-name]
  5. 您现在可以在 Nexus 仪表板的存储库下看到您的包。

拉你的包裹

  1. 在项目文件夹的根目录下创建 .npmrc 并使用以下值:

注册表= http://ec2-34-229-205-247.compute-1.amazonaws.com:8082/repository/[your-nexus-group-repo-name]/

电子邮件=您的电子邮件

_auth=YWRtaW46YWRtaW4xMjM=(生成使用:$echo -n 'admin:admin123' | openssl base64)

  1. 在 package.json

    “依赖项”:{“您的项目名称”:“1.0.0”}

  2. npm 安装

  3. 您现在可以在 node_modules/ 下看到您的包

推荐阅读