关于安装gulp-sass失败的问题解决

时光毁灭记忆、已成空白 提交于 2019-12-06 02:07:39

该文章所介绍的问题均是在64位win8下出现的。

网络原因导致gulp-sass安装失败

如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件。
执行安装gup-sass的命令

$ npm install gulp-sass --save-dev

这个过程中会先安装 node-sass ,因为 gulp-sass 依赖于 node-sass 。中间出现的错误信息类似下面这样:

Cannot download https://github.com/sass/node-sass/releases/download/v3.4.2/win32-x64-46_bind

处理思路

看现象很有可能是这些二进制文件使用了 GitHub 的 lfs 服务,而 lfs 使用的是亚马逊云,由于网络原因,这些服务器无法访问。

现在解决问题的办法思路就很清晰了,下载源码自己编译一个这样的二进制文件,或下载官方的二进制文件。只要解决该文件的下载问题就可以继续往后安装。

打开 github 看一下该项目 https://github.com/sass/node-sass,在 releases 页面能找到下失败的文件 win32-x64-46_binding.node ,这里还可以下载到 source code,下载后里头有 C++ 项目 使用 visualstudio2015 自己编译一个就可以了。

同时,在 https://github.com/sass 下,还发现一个名字叫 node-sass-binaries 的项目,这里头其实也有刚才的那个二进制文件,并且这里的是可以直接下载的(貌似没使用 lfs)。

下面说一下直接使用该项目中的二进制文件进行安装 node-sass 过程。
操作

npm 是一个功能超级强悍的工具,安装一个软件包的方式也当然不仅仅是 npm install packagename 这一种方式,当然这是最快捷的使用公共软件包的安装方式。

首先到官网(https://github.com/sass/node-sass/releases)下载 node-sass 项目源码,下载后解压至相应的 node_modules 目录中。
接下来,打开 package.json 文件,检查 script 字段

"scripts": {
    "coverage": "node scripts/coverage.js",
    "install": "node scripts/install.js",
    "postinstall": "node scripts/build.js",
    "pretest": "jshint bin lib scripts test",
    "test": "mocha test"
  },

打开 install 字段对应的文件 scripts/install.js,可以看到 checkAndDownloadBinary() 在下载这个二进制文件,URL使用的是 process.sass.binaryUrl,我们可以直接在这里覆盖这个变量,把改地址修改为上面提到的那个能够下载的二进制文件地址,大概113行。

download(process.sass.binaryUrl, process.sass.binaryPath, function(err) {
      if (err) {
        console.error(err);
        return;
      }

      console.log('Binary downloaded and installed at', process.sass.binaryPath);
    });

或者,找出上面提到的 sass.binaryUrl() 方法,打开 ../lib/extensions.js 文件,大约108行左右,修改为如下样子即可

function getBinaryUrl() {
  var site = flags['--sass-binary-site'] ||
             process.env.SASS_BINARY_SITE  ||
             process.env.npm_config_sass_binary_site ||
             (pkg.nodeSassConfig && pkg.nodeSassConfig.binarySite) ||
             'https://github.com/sass/node-sass/releases/download';

    //return [site, 'v' + pkg.version, sass.binaryName].join('/');
    return 'https://github.com/sass/node-sass-binaries/blob/master/win32-x64-46_binding.node';
}

修改完成后,继续安装即可。

缺少python环境

报错代码

gyp verb check python checking for Python executable "python2.7" in the PATH
gyp verb which failed Error: not found: python2.7
gyp verb which failed at F (C:\Users\Administrator\Desktop\webpack\node_modules\node-sass\node_modules\node-gyp\node_modules\which\which.js:78:19)
gyp verb which failed at E (C:\Users\Administrator\Desktop\webpack\node_modules\node-sass\node_modules\node-gyp\node_modules\which\which.js:82:29)

安装python的包,点击下载
这里写图片描述
注意:安装python时需要允许写入path,如下图所示,点击左侧图标,选择第一项
这里写图片描述

MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”

gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。                                                                                                                                                    
生成启动时间为 2016/2/23 14:45:24。                                                                                                                                                                                     
节点 1 上的项目“C:\work\testCode\gulp\node_modules\node-sass\build\binding.sln”(默认目标)。                                                                                                                                      
ValidateSolutionConfiguration:
  正在生成解决方案配置“Release|x64”。                                                                                                                                                                                            
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [
C:\work\testCode\gulp\node_modules\node-sass\build\
binding.sln]
已完成生成项目“C:\work\testCode\gulp\node_modules\node-sass\build\binding.sln”(默认目标)的操作 - 失败。                                                                                                                                


生成失败。                   

1. 打开.net Framework

  • 找到控制面板中“启用或关闭windows功能”
    这里写图片描述
  • 打开控制面板中“启用或关闭windows功能”
    这里写图片描述
  • 启用后,在控制面板=》程序中可以看到.net framework
    这里写图片描述

2. 安装Visual Studio Express 2015 for window desktop

我在网上查阅资料,说只要安装Visual Studio Express就可以了,这个蛮大的,装了好久,本来不想安装,可是装不上gulp-sass,无奈,只能安装一下了。下载地址,下载的文件名为“wdexpress_full_CHS.exe”
下载截图
这里写图片描述
安装截图
这里写图片描述

3. 更改npm中使用vs的配置

我是安装的2015,所以需要强制指定npm使用vs2015

$ npm config set msvs_version 2015

4. 安装gulp-sass

$ npm install gulp-sass --save-dev

这次终于安装成功,截图如下:
这里写图片描述

参考文章:http://www.th7.cn/web/js/201511/135415.shtml

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!