首页 > 解决方案 > Jenkins npm install 对于目录 A 失败,但对于目录 B 安装成功

问题描述

我的 Jenkinsfile 设置在两个目录 github repo 的根目录下,旨在为 Docker 容器内的两个子目录(dir“frontend”和 dir“backend”)安装(npm install)包。Dir bakcend 是一个 Nestjs 应用程序,安装时没有错误。Dir 前端,一个角度应用程序,在 npm 安装期间出错并给出以下错误:“npm WARN tar ENOENT:没有这样的文件或目录......”

root
-dir backend (nestjs server)
-dir frontend (angular app)
-Jenkinsfile

Jenkins文件片段:

pipeline {
  agent {
    docker {
      image 'node:alpine'
      args '-p 20001-20100:3000'
    }

  }
  stages {
    stage('Build') {
          steps {

            dir('frontend') {
              sh 'npm install' <<<THIS ERRORS
              echo "install frontend end"
            }

            dir('backend') {
              sh 'npm install' <<<THIS WILL NOT ERROR
              echo "install backend end"
            }
          } 
        }
etc...

“前端”npm install将导致错误。如果我颠倒顺序并首先放置“后端”步骤,它将安装后端包而不会出错。

我有另一个 Jenkinsfile 具有类似的 Angular 应用程序,它可以安装、构建和部署而不会出错,所以我不认为这是一个 Angular/cli 问题。

标签: angulardockerjenkinsnpm-installjenkins-blueocean

解决方案


该命令npm install需要一个 pacage.json 文件,该文件在 Angular 应用程序中不可用,因此它在 Angular 端出现错误,而在节点端,该package.json文件已经存在,因此在节点端,它运行成功。

要在角度端运行命令,首先需要运行命令,npm init然后才能运行命令npm install

角侧

Step 1 ) npm init
step 2 ) npm install

这将解决您的问题。


推荐阅读