解决 Jenkins 报 /usr/bin/env: node: 没有那个文件或目录

本文记录了一位开发者在CentOS7.6上使用Jenkins2.164.3和Node14.13.0时遇到的问题。在升级Node版本并使用NVM管理后,Jenkins构建时出现找不到Node的错误。经过排查,尝试了更新环境变量、使用nvm-wrapper插件等方法,最终解决了Jenkins识别Node版本的问题,实现了不同项目使用不同Node版本的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境说明

  • CentOS 7.6
  • Jenkins 2.164.3
  • Node 14.13.0

二、问题说明

服务器 Node 版本原为 10.13.0,后因部署新项目需使用 14.13.0 版本。因此全局卸载 Node,安装 NVM 来管理 Node 。当使用 Jenkins 构建时候,发生 /usr/bin/env: node: 没有那个文件或目录,如下图

三、问题排查过程

1、确定服务器 NVM 和 Node 是否正常(没问题)

2、确定 NVM 是否已自动创建 Node 环境变量(没问题)

3、确定 Jenkins 执行脚本是否识别 Node(有问题)


4、确定 Jenkins 执行脚本是否识别 Node 环境变量(有问题)


5、经与运维人员沟通,增加以下两条命令,可正常执行(PS:服务器一般由运维人员管理,安装 NVM 经过领导同意后我才折腾)


6、几步折腾后,疑惑:NVM 安装都是重启终端才能识别,难道 Jenkins 也要重启才能识别 Node ?结果依然没用。。。


7、和运维人员继续沟通,通过 source /etc/profile 更新环境变量,依然没用。。。

四、通过全局属性添加环境变量来识别 Node

系统管理 > 系统设置 > 全局属性 > 环境变量

五、通过安装 nvm-wrapper 插件管理构建 Node

虽然可以通过 export 环境变量和 Jenkins 中配置环境方式让 Jenkins 识别到 Node,可满足不了不同的项目版本使用不同的 Node 版本需求,而 nvm-wrapper 则可以做到

1、在 Jenkins 中安装 nvm-wrapper 插件,系统管理 > 插件管理 > 可选插件

2、配置项目级别 Node 版本,项目(要构建的项目) > 配置 > NVM Settings

<think>嗯,用户想了解“env”在IT领域的含义和用法。首先,我得回忆一下自己知道的关于“env”的内容。env在计算机领域主要有两个常见用途:环境变量和命令行工具。 环境变量(Environment Variables)是操作系统应用程序用来存储配置信息的键值对。比如,PATH变量告诉系统去哪里可执行文件。在编程中,比如Python的os模块可以访问这些变量,像os.getenv('PATH')。可能用户会想知道如何在不同编程语言中操作环境变量,者如何设置它们。记得引用里提到了Python中的self用法,可能用户对Python环境变量处理也感兴趣,需要提到相关的库方法。 然后是env命令行工具,主要在Unix/Linux系统中用来在修改后的环境中运行命令。例如,env -i PATH=/usr/bin ls会清空环境变量,只保留PATH然后执行ls。这个工具在脚本中用来控制执行环境,比如指定特定的解释器路径,像#!/usr/bin/env python3。这样写的好处是避免硬编码路径,提高可移植性。用户可能想知道这种用法的最佳实践者例子。 另外,可能还要提到其他相关的场景,比如Docker中的.env文件,用于设置容器环境变量,者CI/CD流程中的环境配置。比如在Kubernetes的YAML文件里,会使用env字段定义容器环境变量,引用里提到了kubectl apply和delete操作,可能需要关联到K8s的环境变量配置。比如在Pod的配置文件中,使用env字段设置变量,这样应用在容器启动时可以读取这些变量。 需要检查是否有遗漏的用法,比如某些框架工具特有的env功能。例如,在Node.js中使用process.env来访问环境变量,者在React中通过.env文件设置环境变量。不过可能用户更关注基础的系统级和常见开发场景,所以重点放在操作系统环境变量、命令行工具、容器化环境中的使用。 还要确保回答结构清晰,分点说明,并给出具体例子。比如,环境变量的定义和作用,env命令的用法,在不同场景中的应用,如Docker、Kubernetes。同时,生成相关问题时要覆盖这些方面,比如如何查看环境变量、如何在脚本中使用env命令、在容器中的配置方法等。 最后,根据用户提供的引用,引用1提到kubectl的YAML操作,可能需要关联到K8s中的环境变量设置;引用3关于Python的self,可以提到Python中如何获取环境变量。这样引用会更自然。</think>### env在IT领域的含义及用法 #### 1. **环境变量(Environment Variables)** - **定义**:环境变量是操作系统应用程序中用于存储配置信息的键值对,例如路径、语言设置API密钥。 - **作用**:通过环境变量可以实现动态配置,避免硬编码敏感信息(如数据库密码)[^3]。 - **示例**: - **查看环境变量**: ```bash # Linux/Mac printenv # Windows set ``` - **编程中访问**: ```python import os print(os.getenv("PATH")) # 获取系统PATH变量 ``` #### 2. **`env`命令行工具** - **用途**:在Unix/Linux系统中用于在修改后的环境中运行命令。 - **典型场景**: - **临时修改环境运行命令**: ```bash env DISPLAY=:0 firefox # 指定图形界面显示 ``` - **脚本中指定解释器路径**(增强可移植性): ```bash #!/usr/bin/env python3 # 自动查python3路径 ``` #### 3. **容器化与配置管理** - **Docker**:通过`-e`标志`.env`文件设置容器环境变量: ```bash docker run -e "MYSQL_PASSWORD=123456" mysql ``` - **Kubernetes**:在YAML文件中定义环境变量[^1]: ```yaml env: - name: DB_HOST value: "mysql-service" ``` #### 4. **开发与部署** - **CI/CD流程**:在GitLab CIJenkins中通过环境变量传递构建参数。 - **框架集成**:如Node.js的`process.env`React的`.env.local`文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值