在node官网下载时官方会推荐16.x的版本,安装完对电脑上已有项目进行打包,会报webpack、node-sass、sass-loader等依赖版本冲突;根据node-sass官网的说法,不同的node版本需要安装不同的node-sass版本,并且node-sass已经废弃,推荐使用Dart Sasst替代,Dart Sass在npm中的包名就是sass;
1.卸载原有的node-sass与sass-loader
npm uninstall node-sass sass-loader
2.升级项目所有安装的依赖
npm update
3.安装sass-loader(10.x版本)与sass(我的webpack版本是5.10.0)
npm install -D sass-loader@^10 sass
4.再次打包会报错Error: SassError: expected selector;
这是因为项目中样式有用 /deep/ ;如果使用 less 对 css 做出预处理的话,使用 /deep/ 就可以完成样式穿透的行为;如果使用的 scss 对 css 做出的预处理,不能够使用 /deep/ 而应该使用 ::v-deep 才对,于是我便用 ::v-deep 替换了 /deep/ 就解决了这个问题。
5.再次npm run dev 解决了问题。