首页 > 解决方案 > 纱线不能与 nexus 3 npm 代理存储库一起使用

问题描述

我已经设置了一个 Nexus 3 管理器来托管私有 npm 包。nexus 包含三个 npm 存储库,一个hosted、一个proxy和一个group用于组合其他两个。如果已npm bearer realm激活,并且我正在使用具有管理员角色的 nexus 用户进行测试。

我现在已经通过 angular cli 设置了一个简单的 angular 库以进行发布。在角度项目中,我配置.npmrc如下:

registry=https://urlToMyNexus/repo/npm-all/
_authToken=NpmToken.XXXX

现在我想通过yarn install. 和in home home dictionary 是空的.npmrc.yarnrc

预配置的package.json外观如下所示:

{
  "name": "test-libraries",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~9.1.1",
    "@angular/common": "~9.1.1",
    "@angular/compiler": "~9.1.1",
    "@angular/core": "~9.1.1",
    "@angular/forms": "~9.1.1",
    "@angular/platform-browser": "~9.1.1",
    "@angular/platform-browser-dynamic": "~9.1.1",
    "@angular/router": "~9.1.1",
    "rxjs": "~6.5.4",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.2"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.901.1",
    "@angular-devkit/build-ng-packagr": "~0.901.1",
    "@angular/cli": "~9.1.1",
    "@angular/compiler-cli": "~9.1.1",
    "@angular/language-service": "~9.1.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.4.1",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~3.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "ng-packagr": "^9.0.0",
    "protractor": "~5.4.3"
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~3.8.3"
  }
}

yarn install命令现在能够在 中安装所有@angular软件包dependencies,但在rxjs. 它给出了错误error Couldn't find package "rxjs" on the "npm" registry.

如果我尝试npm install使用相同的配置,则所有软件包都已正确安装在 nexus 存储库上。

有没有人有同样的问题?

标签: angularnpmnexusyarnpkgnexus3

解决方案


这周我遇到了同样的问题。当我使用纱线时,它失败了,error Couldn't find package "@egjs/hammerjs" on the "npm" registry.在 unistalling node_modules 和 yarn.lock 之后它可以显示另一个包名,但错误是一样的。但是,如果我npm install改用纱线 - 安装效果很好。就我而言,这不是一个选择,因为项目已经开发了一年多,我不想因此更换包管理器。如果我能找到适用于纱线的解决方案,我将进一步调查并编辑这篇文章

更新: 对我来说,以下步骤确实解决了这个问题:

  1. 删除 .yarnrc 和 .npmrc 文件
  2. 运行命令yarn config delete registry从纱线内部配置中删除当前注册表 url
  3. 使用以下内容创建 .npmrc
registry=https://nexus-registry-url.com
always-auth=true
_auth=<base64-token-value>

在此步骤yarn install适用于我的本地机器和 docker 中的项目 CI/CD 之后。


推荐阅读