最近准备把公司使用的node版本进行升级,我们的UI库是基于ElementUI基础上进行开发的,在升级node过程中遇到一些问题,记录如下

尝试1:直接升级node版本

发现一些c++的编译报错,如下图
1

尝试2: 卸载node-sass,安装sass

在网上进行了一些搜索,https://zhuanlan.zhihu.com/p/168018388
文章中使用了别名,相当于引用的是node-sass但是实际使用的是sass
全局搜索了下node-sass,然后发现UI库中还使用了gulp-sass,该包内部使用了node-sass。所以单单修改别名还是不行的,得把gulp-sass也要解决掉。

最终解决方案

在elementUI的issue中看到看到node-sass升级到sass的讨论,最终看到相关的pr。根据该Pr进行了升级。
升级了sass和sass-loader,并且将gulp-sass升级到gulp-dart-sass,还需要修改相关语法。
相关语法主要是

  • /deep/ -> ::v-deep
  • 除法/ 修改为 math.div并使用@use "sass:math";

参考: