.nvmrc无效

news2024/11/29 6:31:45

背景

既然你已经使用了nvm那么他的功能我就不介绍了。但是使用场景我与开发小伙伴探讨了一下发现很多问题。你的nvm使用方法真的正确吗?

问题:假设现在有10个项目对应10个不同的node版本,你应该怎么来管理呢?
同学1: 写个本地文档记录到电脑中!
我 : 这样真的好吗?
同学2: 每个READ.md文件中说明一下!
我 : 每个项目的READ.md你确定都会看吗?每次切换项目都要看吗?
同学3: 既然我们用了nvm 那直接在package.json中修改下启动命令!
我 : 自动化部署的时候需要执行启动命令吗?

但是同学3给了我们思路。有什么每个项目可以管理自己指定版本的东西吗?
于是我翻了下nvm的文档 答案是有的 .nvmrc

使用

根据官网的提示进入项目根目录 执行如下代码

  • 根目录下创建.nvmrc内容为16.19.1
    echo "16.19.1" > .nvmrc
    
  • 切换版本为nvmrc中指定版本
    nvm use
    

这样似乎达到了我们的目的,只要每个文件都创建一个.nvmrc文件就好。但是事情真的会那么圆满吗。
在这里插入图片描述
这是怎么回事,为什么在服务器上在mac都好好的 就在windows电脑上不行呢?
查阅了很多资料,也没有具体的答案,我以为读取到了最外面的配置文件 因为官网将nvmrc会一直往上找直到找到最上层。然而都没什么卵用。 就算找到解决方案好像也没办法 我总不能吧开发同学的电脑都修改一下吧。
在 bash 执行nvm use $(cat .nvmrc) 可以使用 但是在cmd一样失败
最终找到一种中转方案

nvm use 无效最终解决方案

兼容bash cmd 在mac windows linux 均可兼容。如果使用cicd部署 记得执行切换npm run nvm命令

  • 根目录下创建.nvmrc内容为16.19.1
echo "16.19.1" > .nvmrc
  • 修改package.json 文件 scripts 中添加
	"scripts": {
			"nvm":"node lvnvm.js",
			...你之前的代码
		}
  • 跟目录下新增lvnvm.js文件 文件内容如下 文件名称最好别修改有大坑
const fs = require('fs');
const os = require('os');
const { execSync } = require('child_process');

const nvmrcContent = fs.readFileSync('.nvmrc', 'utf8').trim();
const nvmVersion = os.platform() === 'win32' ? execSync('type .nvmrc', { encoding: 'utf8' }).trim() : nvmrcContent;

execSync(`nvm use ${nvmVersion}`, { stdio: 'inherit' });

  • 这时候修改根目录下.nvmrc为指定版本
  • npm run nvm 即可切换到指定版本

废话文学

原本是想用官方支持的nvm use直接读取.nvmrc的。调研发现,我、群友、同事的环境,都有失败的情况,无奈之下用node做了层中专给了指定版本。如果有大佬了解这方面的知识欢迎评论指导!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LT8619C是一款高性能HDMI转TTL/BT656/BT601/BT1120加2PORT LVDS,支持高达4K30HZ的分辨率。

LT8619C • 概述: Lontium的LT8619C是一款高性能的HDMI/双模式DP接收器芯片,符合HDMI 1.4规范,支持HDCP1.4解码,对HDMI的支持分辨率高达4Kx2K30Hz。TTL输出可支持RGB、BT656、BT1120,支持最多24位RGB或BT656/BT1120输…

动手学深度学习——多层感知机(原理解释+代码详解)

目录 一、多层感知机1. 隐藏层1.1 线性模型可能会出错1.2 在网络中加入隐藏层1.3 从线性到非线性1.4 通用近似定理 2. 激活函数2.1 ReLU函数2.2 sigmoid函数2.3 tanh函数 3. 小结 二、多层感知机的从零开始实现2.1 初始化模型参数2.2 激活函数2.3 模型2.4 损失函数2.5 训练 三、…

【数据结构刷题】消失的数字和轮转数组

目录 一.消失的数字 方法一:异或全部元素 方法二:利用等差数列求和-该数组全部元素之和。 二.轮转数组 题型1:实现一个函数,可以左旋字符串中的k个字符。 写法1:暴力求解 根据该题写出右旋转 写法2:三步旋转法(左逆序,右逆序,整体…

2023年7月字节前端青训营入营题目记录(大题)

前言&#xff1a; 不一定是完整的题目内容&#xff0c;但意思差不多是一个意思 1.实现一个url解析成对象的函数&#xff1a; function ParseParams(url: string): Record<string, any> {const paramsstr url.split("?")[1];const paramsArr paramsstr.spl…

IDEA中把导航栏的字体放大

IDEA中如何把导航栏的字体放大&#xff1f; 选择File--Settings--Appearance&#xff0c;找到下面的size,选择自己想要的字体大小后点击 OK 即可。 字体大了果然看的更舒服了~写代码都有动力了哈哈哈哈 服了~

MySQL基本语句

目录 一、MySQL数据库管理 查看数据库信息 查看数据库中的表信息use 数据库名 #切换到书库中 显示数据表的结构&#xff08;字段&#xff09; 二、SQL语句 1.创建新的数据库 2.创建新的表 3.增加&#xff08;insert&#xff09; 4.删除 4.1清空表 4.2删除表 5.修改…

SpringMVC的数据响应-直接回写json字符串

一般我们操作对象&#xff0c;将对象转变为json 这时导入json 转换工具的包 包1 包2-json数据绑定 包3 返回的就是json字符串你直接返回就行了 返回一个json格式的字符串 直接回写就加这个res.... 内部字符串要进行相应的转意 能够看到json字符串 能不能你封装对象&#xff0c…

jenkins+python+pytest+selenium 自动化执行脚本并发送报告

目录 安装jenkins jenkins 安装网址&#xff1a; 傻瓜式安装 配置环境 键path 或者随便填 构建后操作 在jenkins上展示html的报告&#xff0c;需要添加一个HTML Publisher plugin插件 查看报告显示丢失了css样式 加载css样式丢失解决&#xff1a;https://www.cnblogs.com/…

如何使用Dom4J解析XML文档

文章目录 XML解析的方式使用Dom4J解析XML文档Dom4J结合XPath解析XML 最近在手写MyBatis的源码&#xff0c;在写到XMLConfigBuilder的时候&#xff0c;其中要解析xml文件构建Configuration。在MyBatis的早期版本中使用了DOM4J来解析配置文件和映射文件。但是从3.x版本开始,MyBat…

数据结构——绪论

基本概念 数据&#xff1a;数据是信息的载体&#xff0c;对客观事物的字符表示。 数据元素&#xff1a;数据的基本单位&#xff0c;通常作为一个整体进行考虑和处理。 数据项&#xff1a; 一个数据元素由多个数据项组成&#xff0c;数据项是数据元素不可分割的最小单位。 数据…

流程图如何制作?几个流程图实用制作方法教给你

流程图如何制作&#xff1f;流程图是一种重要的图表类型&#xff0c;通常用于描绘系统、流程或程序的步骤和关系。它们在各种领域都有广泛的应用&#xff0c;包括工程、科学、商业和教育等。本文将介绍一些制作流程图的实用方法&#xff0c;以及一些快速、易于使用的工具。 制作…

k8s之Pod容器资源限制

目录 一、Pod 容器的资源限制二、CPU 资源单位三、内存资源单位四、为本地临时性存储设置请求和限制五、总结 一、Pod 容器的资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 当为…

MySQL索引事务与存储引擎

MySQL索引事务与存储引擎 索引概念索引作用副作用索引场景创建索引原则索引分类 事务概念:特性事务隔离级别 MYSQL存储引擎概念常用的存储引擎MyISAMInnoDB 索引 概念 是一个排序的列表&#xff0c;存储着索引值和这个值所对应的物理地址无须对整个表进行扫描&#xff0c;通过…

Vant安装及必坑

vant官网地址 Vant 4 - A lightweight, customizable Vue UI library for mobile web apps. 1.通过npm安装&#xff1a; 注意vue2和vue3不同&#xff0c;版本过高会报错 vue2 npm i vantlatest-v2或者npm i vant -Svue3 npm i vant或者npm i vantnext -S 备注&#xff1a…

为什么信创国产化替代 必备 “开放式ETL产品“(下篇)

信创国产化通俗来讲&#xff0c;就是在核心芯片、基础硬件、操作系统、中间件、数据服务器等领域实现信创产业的国产替代。ETL技术 属于基础软件类中间件技术。发展自己研制的安全可靠的能够保证国家信息安全的设备&#xff0c;随着信息安全问题日益突出&#xff0c;信息安全已…

小程序 点击view内部元素 不传参

点击 内部图片和文字 type 得到的是空 无法传递参数 解决办法: 用 currentTarget 代替 target

【LangChain】数据连接(Data connection)

概要 许多LLM申请需要特定于用户的数据&#xff0c;这些数据不属于模型训练集的一部分。 LangChain 为您提供了通过以下方式加载、转换、存储和查询数据的构建块&#xff1a; Document loaders &#xff1a; 从许多不同来源加载文档Document transformers&#xff1a;拆分文档…

怎么把文档翻译成英文?这几款文档翻译工具都能实现

听说你正在寻找免费的文档翻译软件&#xff0c;我来给你一些建议吧&#xff01;翻译软件的确是个很有用的工具&#xff0c;能够帮助我们快速翻译各种语言的文档。而且现在有很多免费的选择&#xff0c;真是再好不过了&#xff01;但是随着市面上文档翻译软件数量的增多&#xf…

车载测试:车联网功能组件及安全测试策略

目录 一、车联网功能组件 车域网 IVI TBOX ECU TSP APP 通信及密码特殊指标 车端特殊指标 APP特殊指标 测试用例 一、车联网功能组件 车联网是以汽车智能化、网联化为基础&#xff0c;广泛应用新一代通信技术、人工智能技术构建起的新型基础设施。在整体架构上&…

单据小票打印模板自定义设计,手机收银软件APP搭配蓝牙便携打印机,移动便携打印零售单单据小票

单据小票打印模板自定义设计&#xff0c;手机收银软件APP搭配蓝牙便携打印机&#xff0c;移动便携打印零售单单据小票&#xff0c;轻松实现仓库条码管理&#xff0c;扫码入库出库盘点_哔哩哔哩_bilibili单据小票打印模板自定义设计&#xff0c;手机收银软件APP搭配蓝牙便携打印…