设置Nexus npm:在 Jmeter 板上上载tar文件时出现空指针异常

8dtrkrch  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(175)

在尝试上传一个简单的js包时,当我在Nexus Jmeter 板上查看记录器时,我收到了以下错误堆栈跟踪:

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).....
zengzsys

zengzsys1#

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

配置

1.下载Nexus OSS here
1.解压缩tar文件并启动cd /NEXUS_FOLDER/nexus ./bin/nexus start
1.打开浏览器类型http://localhost:8081/。登录(默认用户名=admin/密码= admin 123)
1.单击设置->存储库->创建存储库

  • 仓库如何工作:* 有三种类型的存储库:

1.托管存储库:由nexus托管的存储库。(您的内部库)。
1.创建仓库->选择npm(hosted)->输入名称->允许重新部署->创建仓库
1.代理存储库:在npm中,你不能从不同的仓库服务器下载包。因此,要下载公共npm包,您必须创建一个代理服务器。
1.创建仓库->选择npm(proxy)->输入名称->远程存储->输入http://registry.npmjs.org->保存
1.组存储库:组存储库允许您将多个存储库和具有相同存储库格式的其他存储库组合并到一个存储库组中。这个组和相关的URL可以作为一个单一的访问点,访问来自多个存储库的特定格式的所有组件。
1.创建仓库->选择npm(group)->成员仓库->添加之前创建的两个仓库->保存
1.设置->在左侧菜单->领域->添加npm承载令牌领域到活动

推包入库

1.现在转到项目文件夹的根目录,键入npm init -> create package json -> enter name/version value
1.在项目文件夹根目录的终端上,键入:npm set registry http://localhost:8081/repository/[your-hosted-repo-name]/

  1. npm adduser --registry= http://localhost:8081/repository/[your-hosted-repo-name]。键入用户名/密码/电子邮件(默认值:admin/admin 123/[您的邮箱])
  2. npm publish --registry http://localhost:8081/repository/[your-hosted-repo-name]
    1.现在,您可以在Nexus控制面板的存储库下查看您的软件包。

拉你的包裹

1.在项目文件夹的根目录下创建.npmrc,其值为:
注册表= http://ec2-34-229-205-247.compute-1.amazonaws.com:8082/repository/[your-nexus-group-repo-name]/
电子邮件=您的电子邮件
_auth= YWRtaW 46 YWRtaW 4xMjM =(使用以下代码生成:$echo -n 'admin:admin123'| openssl base64)
1.在package.json中
“依赖关系”:{“your-project-name”:1.0.0

  1. npm安装
    1.现在可以在node_modules/下看到您的包
xjreopfe

xjreopfe2#

我被叫去诊断这样一个问题,结果是加载的.tgz文件实际上根本不是. tar.gz(它是一个重命名的zip!解析package.json的代码会尝试加载到. tar.gz流中,但如果失败并且由于任何原因引发异常,它只会记录一个错误“处理package.json时发生错误,返回空Map以继续”,然后返回一个空Map。在加载package.json之后,它做的第一件事是使用json中的名称和版本调用createRepositoryPath(如果返回的map为空,则为null),然后尝试从名称中解析包id(再次为null),然后检查它是否为null(它确实是!)所以它失败了。
因此,一个坏的/损坏的/错误格式的存档会导致这个错误,就像它为你表现的那样。如果它们在解析时失败,这将是一个明显的错误,但相反,它们只是返回一个空的map,并让失败来自偶然的事情。糟糕的设计。

相关问题