# node-sass 的安装

# 1. 介绍

环境:

  • node v12.22.12
  • node-sass@4.13.1
  • win10

目录:

test-2023-12-25/
  package.json
  .npmrc

文件:

  • package.json

    {
      "dependencies": {
        "node-sass": "4.13.1"
      }
    }
    

# 2. 失败的原因

安装:

W:\dev\test\test-2023-12-25>npm i

> node-sass@4.13.1 install W:\dev\test\test-2023-12-25\node_modules\node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.13.1/win32-x64-72_binding.node

Download complete:

Binary saved to W:\dev\test\test-2023-12-25\node_modules\node-sass\vendor\win32-x64-72\binding.node

Caching binary to C:\Users\wuqinfei\AppData\Roaming\npm-cache\node-sass\4.13.1\win32-x64-72_binding.node

原因:

  • https://github.com/sass/node-sass/releases/download/v4.13.1/win32-x64-72_binding.node 下载失败导致 node-sass 安装失败

分析:

  • 解决 win32-x64-72_binding.node 文件的下载问题

# 3. 外网安装

说明:

  • 指定 win32-x64-72_binding.node 下载 URL

方式:

  1. .npmrc 文件里指定 sass_binary_site
  2. 设置临时环境变量 SASS_BINARY_SITE

示例:

  1. 在项目根目录创建 .npmrc 文件

  2. .npmrc 文件添加如下内容:

    # 指定淘宝镜像源里的 node-sass
    sass_binary_site=https://registry.npmmirror.com/node-sass/
    
  3. 切换至项目根目录,执行 npm i 即可

# 4. 内网安装

说明:

  • 查看安装失败时,日志里记录里的 .node 文件名称(如 win32-x64-72_binding.node
  • win32-x64-72_binding.node 下载到本地,然后放入缓存

缓存:

  • 本地缓存: test-2023-12-25\node_modules\node-sass\vendor\win32-x64-72\binding.node

  • 全局缓存:

    • 查看缓存位置
    npm config get cache
    
    ## C:\Users\wuqinfei\AppData\Roaming\npm-cache
    
    • C:\Users\wuqinfei\AppData\Roaming\npm-cache\node-sass\4.13.1\win32-x64-72_binding.node

示例:

  1. 下载 win32-x64-72_binding.node (opens new window)
  2. win32-x64-72_binding.node 拷贝至 C:\Users\wuqinfei\AppData\Roaming\npm-cache\node-sass\4.13.1
  3. 切换至项目根目录,执行 npm i

# 5. 其它情况

说明:

  • "sass-loader": "^9.0.2" 依赖 "node-sass": "^4.0.0"

方案:

  1. 使用 node v14
  2. 删除 package-lock.json、 清缓存 等
  3. 如果卡在 从 github 下载包,则使用 SwitchHosts 指定 github 服务器地址即可

示例:

# Delete package-lock.json

npm cache clean --force

npm rebuild node-sass

# 6. 参考

本章目录