在 CI 管道上构建项目以及尝试通过 Yarn 添加包时出现错误“错误找不到包“XXX”

Fel*_*och 6 frontend reactjs yarnpkg

周末后返回我们的项目后,我的团队遇到了错误“错误无法在“npm”注册表上找到“gl-plot3d@^2.4.2”所需的包“3d-view@^2.0.0” . ” 在安装阶段在我们的 CI 管道上。此外,在尝试使用纱线添加包时会发生此错误,从而终止进程。

这个错误发生在我们项目的前端,在通过 yarn start 正常启动时不会出现。在周末前的最后一次推送中,一切正常,没有任何错误。

从安装命令开始的 CI 作业日志:

$ yarn install
 yarn install v1.17.3
 info No lockfile found.
 [1/4] Resolving packages...
 warning @material-ui/core > popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
 warning moments > myconf > babel > babel-core > minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
 warning moments > myconf > babel > babel-core > core-js@1.2.7: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
 warning plotly.js > regl-splom > left-pad@1.3.0: use String.prototype.padStart()
 warning plotly.js > ndarray-fill > cwise > static-module > through2 > xtend > object-keys@0.4.0: 
 warning plotly.js > point-cluster > bubleify > buble > os-homedir@2.0.0: This is not needed anymore. Use `require('os').homedir()` instead.
 error Couldn't find package "3d-view@^2.0.0" required by "gl-plot3d@^2.4.2" on the "npm" registry.
 info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Run Code Online (Sandbox Code Playgroud)

我们的 .gitlab-ci.yml 代码:

stages:
  - build
#  - test
#  - deploy

before_script:
#  - echo `pwd` # debug
#  - echo "$CI_BUILD_NAME, $CI_BUILD_REF_NAME $CI_BUILD_STAGE" # debug
  - export GRADLE_USER_HOME=`pwd`/.gradle
  - unset CI

cache:
  paths:
    - .gradle/wrapper
    - .gradle/caches

build backend:
  image: gradle:6.1-jdk8
  stage: build
  script:
    - cd backend
    - gradle war


  artifacts:
    paths:
      - backend/build/libs/*.jar
    expire_in: 1 week

build frontend:
  image: node:10.16.3
  stage: build
  script:
    - cd frontend
    - yarn install
    - export NODE_OPTIONS=--max_old_space_size=4096
    - yarn build
Run Code Online (Sandbox Code Playgroud)

package.json 中的依赖项:

 "dependencies": {
    "@material-ui/core": "^4.9.0",
    "@material-ui/icons": "^4.5.1",
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "axios": "^0.19.2",
    "moments": "^0.0.2",
    "plotly.js": "^1.52.1",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-plotly.js": "^2.4.0",
    "react-scripts": "3.3.0"
  }
Run Code Online (Sandbox Code Playgroud)

我们不知道这是怎么发生的,因为在此期间没有人向分支推送任何东西,并且在团队成员推送我们代码的清理版本而另一个试图通过 Yarn 安装新包时被注意到。

Fel*_*och 0

看来这个问题已经得到解决和修复,但以下是针对其他答案和我们自己的研究找到的一些可行的解决方案,以防这种情况再次发生:

\n\n

1)在安装之前将 3d-view 添加到yarn.lock并添加Plotly.js或任何其他包:

\n\n
    "3d-view@^2.0.0":\n  version "2.0.0"\n  resolved "https://registry.yarnpkg.com/3d-view/-/3d-view-2.0.0.tgz#831ae942d7508c50801e3e06fafe1e8c574e17be"\n  integrity sha1-gxrpQtdQjFCAHj4G+v4ejFdOF74=\n  dependencies:\n    matrix-camera-controller "^2.1.1"\n    orbit-camera-controller "^4.0.0"\n    turntable-camera-controller "^3.0.0"\n
Run Code Online (Sandbox Code Playgroud)\n\n

2) 手动安装添加了注册表的软件包:

\n\n
yarn add 3d-view@2.0.0 --registry https://yarn.npmjs.org\n
Run Code Online (Sandbox Code Playgroud)\n\n

感谢用户masseyb

\n\n
npm i git://github.com/mikolalysenko/3d-view\n
Run Code Online (Sandbox Code Playgroud)\n\n

感谢用户Diogo Falc\xc3\xa3o

\n