Nvm在win11下的安装问题

977 阅读3分钟

背景

近期将win10升级到win11,在安装nvm时遇到了问题,因维护新旧项目问题,node需要不同版本的支持

安装

1:安装包下载:https://github.com/coreybutler/nvm-windows/releases 选择(nvm-setup.zip

2:环境变量配置:jingyan.baidu.com/article/e75…

用法

nvm list查看目前已经安装的版本

nvm list available 显示可下载版本的部分列表

nvm install 版本号 安装指定的版本的nodejs

nvm use 版本号 使用指定版本的nodejs

注意NVM环境变量的配置需重启电脑

背景;

以上在未升级win11前的安装及环境变量配置

升级win11系统后

nvm安装后node生效但是npm不生效,解决如下

经多次安装测试, 8.X以上的node版本对应的npm都没法自动安装,

需要自己到npm官网( npm.taobao.org/mirrors/npm…,下载手动安装对应的npm版本

1、进入nvm下的指定的node版本目录发现目录下没有npm运行文件

2、进入node_modules发现文件夹为空

3、自己下载node对应的npm版本

4、解压后将文件夹重命名为npm并复制到node_modules目录下

5、最后将npm中bin目录下的npm以及npm.cmd复制到与node_modules目录同级目录下

6、nodejs.org/dist/v14.17… 下载对应node版本对应的npm包

codeload.github.com/npm/cli/zip…(10.8.0对应的npm 版本)

codeload.github.com/npm/cli/zip…((14.17.2对应的npm 版本))

如何解决在项目中锁定node版本及统一包管理问题

  1. Package Manager (npm、cnpm、yarn、pnpm)

痛点问题

1:项目成员夸好几个区域管理,且在项目中Node.js 版本不统一:守旧派用 12.x、保守用 14.x、激进用 latest。

2:有人习惯用 npm、有人习惯用 yarn,或pnpm, 代码库里面经常会存在 package-lock.json、yarn.lock 文件同时存在的情况。更痛的是本地build是好的,服务器上部署时总是失败或报一些其它奇奇怪怪问题,

3:正常情况下假如用的是yarn, 那么会要求yarn.lock 一并提交到仓库,目的的保持版本一致性

3:所以就制定了约定化规范,锁定 Node.js 版本和包管理器

4:虽然可以使用nvm 切换安装不同版本的node,但在同一个项目中不允许多版本

锁定项目 Node 版本

通过在 package.json 中指定 engines 字段,可限定项目使用的 node 版本。下面配置仅允许用户使用 14 或者 16的版本。更多的配置可以参考 package.json | npm Docs

  "engines": {
    "node": "14.x || 16.x"
  },

以上配置仅对yarn 生效。那对 npm 怎么生效呢? 在项目根目录下的 .npmrc 文件中增加如下配置

engine-strict = true

以上配置完成后,npm install ; 错误的 Node.js 版本将直接退出

锁定包管理器

利用 only-allow 工具包、npm scripts 快速实现锁定。

1、安装 npm install -D only-allow

2、在 package.json 文件中进行配置 scripts.preinstall , 允许输入的值 only-allow npm、only-allow pnpm、only-allow yarn

比如约定只允许使用npm,则添加如下配置

"scripts": {
    "preinstall": "only-allow npm",
    ...
}

如果你是全新从0开始的项目,建议直接使用pnpm

如果你的团队也遇到这样的问题,希望帮到你 ,点个赞吧 ,感谢!