问题记录-前端开发闭坑(1)--安装node-sass失败的相关原因及解决方案

背景

本系列用于记录自己遇到的前端开发中的一些坑点,问题可大可小,问题之间不一定有先后关系,甚至不一定存在关联。

简评

由于网上已经有很多分析,此处仅简略描述错误原因及相应的解决方案;同时,由于部分情况并未遇到,因此更多的相关解决方案会放链接在文末,有需自取。
本人对 Node 相关技术还了解不多,如有问题,欢迎指正。

问题描述

开发环境(此处仅列出与问题相关的): NodeJS v16.14.2,npm 包管理器 v8.5.5,sass 预处理器
问题:通过 npm 安装 sass 相关依赖失败,依次是 node-sass 、sass-loader

场景1

错误原因:找不到 python 相关依赖
分析:node-sass 安装时需要从 github 上下载一个.node 文件,该文件用于编译二进制文件(相关原理尚未完全了解)
解决方案1:通过 npm 安装 python 相关环境(未验证)。
解决方案2:不想安装 python 的,可以更换为 cnpm 指令直接从淘宝镜像下载 node-sass,从而避开从 github 下载 .node文件。

npm install -g cnpm --registry=https://registry.npm.taobao.org (后面是注释,请不要复制)该指令用于安置 cnpm
cnpm install node-sass (后面是注释,请不要复制)该指令通过国内镜像安装插件
解决方案3:或者仍然通过 npm 安装 node-sass,但将 .node 文件的源更换为国内镜像
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass

注意以上解决方案不适用出现错误原因2的情况,因此建议先确定不是原因2导致后,再尝试以上解决方案。

场景2

错误原因:node-sass 与 NodeJS 版本不兼容
分析:Node 是 JS 的运行环境,而 node-sass 只是一个插件,两者的维护方相互独立,因此很容易导致兼容性问题发生。安装前需要通过官方文档了解两者的兼容版本。此链接导向官方文档:https://github.com/sass/node-sass/releases
解决方案:根据 Node 版本找到对应兼容的 node-sass 版本,较新的版本基本都能顺利兼容,若还是有问题,可以尝试以下版本

NodeJS v16.14.2: node-sass v6.0.1,sass-loader ^10.2.0

一个建议:刚上手通过 Node 搭建项目时,建议通过脚手架创建模板项目,而不是从头开始创建,避免更多潜在的兼容性问题以及插件之间相互依赖产生的问题链。安装新的依赖前,先排除可能的兼容性问题。

更多原因与解决方案:

posted @ 2022-04-05 23:13  CJc_3103  阅读(215)  评论(0编辑  收藏  举报