node-sass 安装过程

  1. npm 拉下 node-sass包;
  2. 根据node版本和node-sass版本拉取对应的binding.node编译器,原因是sass的编译语言比较特殊,需要下载对应版本的编译器才能编译;(node scripts/install.js 阶段)
  3. 如果能拉下binding.node就【安装成功】; 如果找不到对应的binding.node包,即失败,然后就会尝试本地编译。

可能失败的原因

一、网络不稳定

首先要知道的是,安装 node-sass 时在 node scripts/install.js 这个阶段会从 github.com 上下载一个 .node 文件,大部分安装不成功的原因都源自这里,因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com 上面,而这个网址在国内总是"网络不稳定",所以我们需要通过第三方服务器下载这个文件。

解决办法

1. 使用淘宝镜像
npm set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass

然后重新执行 npm i node-sass 即可完成安装。

2. 使用梯子

假设你的梯子在你本地机器上开启了一个第三方服务器 127.0.0.1:1080,那么只需按照下面的方法配置一下就能正常安装 node-sass 了(如果你开启的是 PAC 模式而不是全局模式,那还需要将 s3.amazonaws.com 加入 PAC 列表):

npm config set proxy http://127.0.0.1:1080
npm i node-sass # 下载完成后删除 http 代理
npm config delete proxy
3. 本地指定.node文件

比如我们在安装 node-sass 的时候可以发现它需要下载具体版本对应的 .node 文件:

$ npm install --save-dev node-sass
> node-sass@5.0.0 install D:\WorkSpace\node-sass-test\node_modules\gulp-sass\node_modules\node-sass
> node scripts/install.js Downloading binary from http://npm.taobao.org/mirrors/node-sass/v5.0.0/win32-x64-72_binding.node

如果你的办公环境不能访问外网,那么可以从有网络的电脑上将.node文件(下载对应 node-sass 版本以及对应操作系统的)下载过来,再传到离线的电脑上指定 binary 路径来安装,执行以下命令完成安装:

npm i -D node-sass@5.0.0 --sass_binary_path=D:\files\win32-x64-72_binding.node

二、本地编译没有Python环境

方法1:通过 NPM 包

网络正常的情况下安装 node-sass 是不需要Python环境的,如果拉不下来对应的binding.node就会进入尝试【本地编译】,然后会检查是否具备的条件:需要python环境,报的错一般就会提示python没有安装(还是 Mac 香,自带python环境没有这些烦恼),安装下面两个包可以快速解决:

不过需要注意:拉包的方式需要cmd用管理员模式打开! ! !

npm install -g node-gyp
npm install --global --production windows-build-tools

如果本地有网络还好,这两个包如果安装成功了,node-sass 基本就能安装成功了,但是如果你的办公环境限制网络可能也比较坑,参考:离线安装 node-gyp 。

方法2:搭建Python环境(建议2.7)

  • 1、去官网下载 www.python.org/download/re… ;
  • 2、安装成功之后,在环境变量中的系统变量新增python的安装路径;
  • 3、执行 npm rebuild node-sass 重构一下;
  • 4、再重新执行 npm install node-sass

三、node-sass版本与当前Node版本不匹配

因node版本与node-sass版本不匹配导致 binding.node 拉不下来,无法编译。

node-sass 版本的兼容性不好,老项目中依赖的 node-sass 很可能已经不兼容新的 node 版本,对应版本兼容参考如下(或官方仓库):

NodeJS Supported node-sass version Node Module
Node 15 5.0+ 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+ 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

比如我在 Node 8 的环境下安装 node-sass@3.13.1, 安装的时候就会出现找不到对应的 binding.node 而报错,如下:

$ npm install --save-dev node-sass
> node-sass@3.13.1 install D:\WorkSpace\mumble-next-ng\node_modules\gulp-sass\node_modules\node-sass
> node scripts/install.js Downloading binary from http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node
Cannot download "http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node": HTTP error 404 OK

出现 404 了,此时更换 node-sass 或 node 的版本即可。

具体参考方案:

npm i node-sass@4.8.3

因为Node 8 不能装 node-sass 3.x 这是肯定的(Node 7才对应 3.x),所以得装 node-sass 4.x。

如果项目中还有 gulp-sass 之类的包,而 gulp-sass 2.x 里面用了 node-sass 3.x,还是会有坑,所以 gulp-sass 得换到 3.x,建议安装 gulp-sass@3.2.1。

四、没有清理缓存

每次装包失败报错后记得都要 npm uninstall xxx 清除装包错误留下的缓存。

比如 npm i -D node-sass 报错了,就要执行一遍 npm uninstall node-sass,然后再重新安装

安装node-sass失败原因及解决办法汇总的更多相关文章

  1. pip第三方库安装失败原因及解决办法

    pip安装三方库失败原因及解决方法 提示:WARNING: You are using pip version 20.2.3, however version 20.2.4 is available. ...

  2. pip install 提示代理连接失败原因及解决办法

    # pip install 提示代理连接失败原因及解决办法 1. 错误提示 在公司电脑上安装Python的虚拟环境时输入命令: pip install virtualenv 系统提示以下异常信息: R ...

  3. mongodb 启动数据库失败原因及解决办法

    刚开始接触mongodb 每次启动完数据库  用好之后退出时直接 command+q强制退出了 导致了下一次数据库启动失败 错误原因: 上一次退出数据库端口号并没有杀死 解决办法 lsof -i tc ...

  4. js上传文件过大导致上传失败原因以及解决办法

    背景:项目需要用到上传视频功能,由于视频有知识产权,要求必须上传到自己的服务器上不允许用第三方视频网站接口上传,于是一开始开始用的是input type=file去上传,小的视频上传没有问题,上传将近 ...

  5. struts2中 jsp:forward 失败原因及解决办法

    问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...

  6. HBase快照迁移数据失败原因及解决办法

    目录 目录 1 1. 背景 1 2. 环境 1 3. 执行语句 1 4. 问题描述 1 5. 错误信息 2 6. 问题原因 3 7. 解决办法 4 1. 背景 机房裁撤,需将源HBase集群的数据迁移 ...

  7. zblog上传安装主题插件不成功的原因和解决办法

    最近有不少zblog用户反映在后台上传安装主题或者插件的时候出现了问题.本文就来尝试说明下这类问题的原因和解决办法. 首先来说说zblog主题或者插件的安装方法,一共有三种方式: 第一种是直接在网站后 ...

  8. eclipse中tomcat发布失败(Could not delete May be locked by another process)原因及解决办法

    在eclipse中tomcat发布项目时,偶尔出现了以下情况: publishing to tomcat v7.0 services at localhost has encountered a pr ...

  9. hadoop安装遇到的各种异常及解决办法

    hadoop安装遇到的各种异常及解决办法 异常一: 2014-03-13 11:10:23,665 INFO org.apache.hadoop.ipc.Client: Retrying connec ...

  10. centos7.5 解决缺少libstdc++.so.6库的原因及解决办法

    centos7. 解决缺少libstdc++.so.6库的原因及解决办法 执行node -v报错如下: [root@bogon ~]# node -v node: error : cannot ope ...

随机推荐

  1. C# 做个Splash(启动屏幕)

    现在有好些splash的做法,我的比较简单,而且如果你的素材不错的话,应该可以做出很好的效果,这个教程不依赖任何第三方控件,直接使用vs的就行了,下面这个是预览图: 正文开始: 我们首先新建一个win ...

  2. Centos7配置vnc

    VNC服务:VNC(Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UN ...

  3. 重新整理 .net core 实践篇—————微服务的桥梁EventBus[三十一]

    前言 简单介绍一下EventBus. 正文 EventBus 也就是集成事件,用于服务与服务之间的通信. 比如说我们的订单处理事件,当订单处理完毕后,我们如果通过api马上去调用后续接口. 比如说订单 ...

  4. 深入探讨下SSR与CSR有啥不同

    随着互联网技术的迅速发展,用户对网页的加载速度和交互体验有了更高的期待.作为开发者,我们常常需要在服务器端渲染(SSR)与客户端渲染(CSR)之间做出选择.这两种渲染方式各有特点,适用于不同的场景和需 ...

  5. 手写一个Mybatis框架

    第一:Mybatis框架介绍 最近看了一篇关于Mybatis的文章,发现MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出可扩展,高聚合,低耦合的规范的代码. 本文手写 ...

  6. C++ 类方法解析:内外定义、参数、访问控制与静态方法详解

    C++ 类方法 类方法,也称为成员函数,是属于类的函数.它们用于操作或查询类数据,并封装在类定义中.类方法可以分为两种类型: 类内定义方法: 直接在类定义内部声明和定义方法. 类外定义方法: 在类定义 ...

  7. docker containerd runc containerd-shim等组件的关系

    早期 kubelet 创建容器工作原理 因为 docker 出生的比 k8s 早,所以 k8s 早期的容器运行时都是基于 docker 的,kubelet 通过 docker 的 api 创建容器.后 ...

  8. 力扣227(java)-基本计算器Ⅱ(中等)

    题目: 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值. 整数除法仅保留整数部分. 你可以假设给定的表达式总是有效的.所有中间结果将在 [-231, 231 - 1] 的范围内. ...

  9. Flink 在有赞的实践和应用

    简介: 本文介绍了Flink 在有赞的实践和应用,内容包括:Flink 的容器化改造和实践.Flink SQL 的实践和应用.未来规划. 作者:沈磊 一.Flink 的容器化改造和实践 1. 有赞的集 ...

  10. 如何基于Dataphin实现敏感数据保护

    ​简介: 在企业的发展过程中,如果不重视敏感数据的保护,和数据安全体系的建设,那么一旦发生了敏感数据泄漏事件,轻则企业口碑受损,业务受影响:重则会直接触法律,受到主管部门的处罚和制裁.本文将以一个最常 ...