angular - 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 问题。
解决方案
该命令npm install
需要一个 pacage.json 文件,该文件在 Angular 应用程序中不可用,因此它在 Angular 端出现错误,而在节点端,该package.json
文件已经存在,因此在节点端,它运行成功。
要在角度端运行命令,首先需要运行命令,npm init
然后才能运行命令npm install
。
在角侧
Step 1 ) npm init
step 2 ) npm install
这将解决您的问题。
推荐阅读
- apache-spark - 在 Spark-Streaming 中,执行器上的活动任务是否可能比内核数更多?
- android - Android系统导航栏背景颜色
- android - Android没有显示所有通知
- arrays - 对对象数组中的多个属性求和
- python - 重命名在 Django admin 中上传的文件并省略表单中的字段
- mysql - 如何在 Ansible 中运行 MySQL 查询
- android - 在 RecyclerView 适配器的 onBindViewHolder 中获取上下文
- ruby-on-rails - Rails 在不同模型上的自定义验证
- java - 发送 html 电子邮件
- c# - Entity Framework Fluent API - 级联删除 - 带接口