likes
comments
collection
share

Node多版本管理:nvm解决node-sass兼容问题

作者站长头像
站长
· 阅读数 36

Node多版本管理:nvm解决node-sass兼容问题

背景

一直同时进行Vue2.0项目、React16项目的维护开发,Node版本稳定在v14.17.6。最近尝试针对蓝鲸监控平台做二次开发,根据README说明安装了pnpm,把Node版本升级到v18.20.2,一顿操作OK了。再回到React16项目开发,遇见了点小问题,配置了NODE_OPTIONS=--openssl-legacy-provider,也OK了。再回到Vue2.0项目,悲催了。

JS框架CSS预处理器Node版本结果
Vue 2.0 (老项目)node-sass + sass-loaderv18.20.2×
Vue 2.0 (老项目)node-sass + sass-loaderv14.17.6
React 16.13.1lessv18.20.2
React 16.13.1lessv14.17.6
Vue 2.0 (新项目)postcss-scssv18.20.2
Vue 2.0 (新项目)postcss-scssv14.17.6×

Vue2.0老项目

node-sass、sass-loader这对烂兄烂弟完全不兼容,按照node18版本对应关系安装,node-sass根本安装不上:

// npm 安装
npm install node-sass@8.0.0

// cnpm 安装
cnpm install node-sass@8.0.0

// pnpm 安装
pnpm install node-sass@8.0.0

报错主要卡在如下:

Install fail! Error: Unsupported URL Type: npm:string-width@^4.2.0 Error: Unsupported URL Type: npm:string-width@^4.2.0

尝试切到sass + sass-loader组合,安装没问题,启动错误:

Syntax Error: TypeError: this.getOptions is not a function

经过查阅策略,sass + sass-loader多版本测试,完全无解。不耻下问:

Node多版本管理:nvm解决node-sass兼容问题

听人劝,吃饱饭 o(╥﹏╥)o

npm版本问题

nvm-windows.exe安装过程中,提示目前已经安装了node-v18.20.0是否管理,感觉挺友好,已经自动管理了一个版本。只需再下载一个node-v14.17.6就可以适配当前项目业务。

nvm -v
// 1.1.12

nvm install 14.17.6

nvm ls
//  * 18.20.2 (Currently using 64-bit executable)
//    14.17.6

nvm use 14.17.6

npm -v
// npm Error: Cannot find module 'node:path'
// *******************

use 14.17.6后npm版本还是node-v18.20.2对应的npm-v10.5.0,又尝试安装了node-v16.0.0,切到node-v16.0.0,npm版本还是v10.5.0。

nodenpm
v18.20.2v10.5.0
v14.17.6v6.14.15

综上测试猜想,安装nvm时虽然管理了之前安装的node-v18.20.2,但是对npm安装目录并没有有效管理,与其修复npm安装目录、环境变量,不如完全清空按照nvm方式重装。

nvm管理

清空Node.js及nvm安装的node.js相关目录

  1. 在控制面板中卸载掉Node.js(v18.20.2)软件
  2. 使用nvm uninstall v18.20.2 / v14.17.6
  3. 在nvm安装目录中删除掉C:\Users\86187\AppData\Roaming\nvm\v18.20.2

交给nvm管理

nvm ls
// 空

nvm install 18.20.2

nvm install 14.17.6

nvm ls
//    18.20.2
//  * 14.17.6 (Currently using 64-bit executable)

nvm use 14.17.6

npm -v
// 6.14.15

nvm use 18.20.2

npm -v
// 10.5.0

设置别名(×)

本来想给nvm管理的node版本设置别名(alias),整的更顺畅简约些,然而nvm安装的这个版本不支持nvm alias

// 只记住大版本号,方便使用
nvm alias v14 14.17.6

nvm alias v18 18.20.2

指令

Node多版本管理:nvm解决node-sass兼容问题

后记

项目开发中用到的语法和less使用上基本类似,直接用less版本兼容性问题可能会少些

转载自:https://juejin.cn/post/7371997060633526326
评论
请登录