使用Yarn 3.4.1执行yarn install时遇node-sass版本不支持错误
解决Yarn 3.4.1执行
yarn install时node-sass版本不兼容错误 错误信息
➤ YN0000: ┌ Resolution step ➤ YN0001: │ Error: node-sass@^3.1.2, ^4.0.0 isn't supported by any available resolver at yf.getResolverByDescriptor (/Users/apple/Documents/projects/nova-web/.yarn/releases/yarn-3.4.1.cjs:391:1647) at yf.bindDescriptor (/Users/apple/Documents/projects/nova-web/.yarn/releases/yarn-3.4.1.cjs:391:1036) at Z (/Users/apple/Documents/projects/nova-web/.yarn/releases/yarn-3.4.1.cjs:439:6900) ➤ YN0000: └ Completed in 0s 987ms ➤ YN0000: Failed with errors in 0s 991ms
问题原因
Yarn 3.x的包解析器采用了更现代的逻辑,不再支持node-sass@^3.1.2、^4.0.0这类停止维护的老旧版本。这些版本的node-sass依赖已废弃的Node.js API,且发布格式不符合Yarn 3的解析标准。
解决方案
升级node-sass到兼容版本:将package.json中的node-sass版本更新为
^6.0.0及以上(需确保本地Node.js版本为12.x或更高),执行命令:yarn add node-sass@^6.0.0 --dev修改后重新运行
yarn install即可。替换为dart-sass(推荐):node-sass已停止维护,官方推荐使用
sass包(dart-sass的npm发布版)替代。执行以下命令完成替换:yarn remove node-sass yarn add sass --devdart-sass与node-sass的API基本兼容,项目的SCSS编译逻辑无需大幅修改。
回退到Yarn 1.x(保留旧node-sass时使用):如果必须依赖旧版本node-sass,可切换到Yarn Classic版本(1.x),它对老旧包的兼容性更好:
# 全局安装Yarn 1.x npm install -g yarn@1.x # 在项目中切换为Classic版本 yarn set version classic # 重新安装依赖 yarn install
内容的提问来源于stack exchange,提问作者Drew Gallagher
相关产品推荐
相关产品推荐

