第一种报错 npm install 提示python 环境未找到 及 node-sass build postinstall 失败
emmm 先说node-sass安装流程
node-sass安装流程:
1.检验本地node_modules中是否安装node-sass,版本是否一致
2.如果未安装或版本不符,从npm源安装node-sass本体
3.检测全局缓存和本地中是否有binding.node,如果有即跳过安装
4.没有binding.node则从github下载该二进制文件并将其缓存到全局
5.假如bingdin.node下载失败,则尝试本地编译出该文件
6.将版本信息写入package-lock.json 实际上node-sass依赖了一个二进制文件binding.node,从npm源安装完本体后还会从github下载binding.node
node-sass安装报错原因
众所周知,node-sass 需要的二进制文件binding.node源被Google墙掉了。因此在 npm install 过程中
是下载不下来的 ,因此 node 为解决这个问题会在 下载node-sass时发现如果下载不下来 就会调用
node-gyp(这个是node自带的,它会提供C++编译)去创建
binding.node并安装在项目的node_modules\node-sass\vendor\win32-x64-83(这个目录根据自己node版本来确定node-sass所需的二进制文件binding.node)\下
而 node-gyp在编译过程中需要 python 环境支持 还有 MS 什么的、因此在你binding.node下载失败时 用
node-gyp 安装binding.node 时 你未安装 python 、MS、、、时就会报python、MS 什么错
解决办法
第一种:
先删除之前项目安装的node-modules 然后运行
npm install --global --production windows-build-tools
(这行命令意思安装node-gyp 构建 binding.node 时所需的 工具 最终会安装到你的 C:\USER.windows-build-tools )【记得配python的环境变量】
安装完成后 重新 npm install(这方法处理的是node-sass所依赖国外的binding.node被墙的情况。我们用node-gyp自己去编译binding.node的方法安装node-sass)
第二种
你想最终的原因是node-sass所依赖的二进制文件binding.node未安装成功对吧,既然被墙掉那咋们就去看看国内的有没有,fine 有的! 国内的淘宝搞一个 奥利给!
npm install -g cnpm --registry=https://registry.npm.taobao.org
( 安装 cnpm 就是淘宝镜像源 )
cnpm i
(这个安装就会cdn到国内的npm源)
(这种方法是用国内镜像下载node-sass所依赖的二进制文件binding.node。而且这种方法安装速度也快特别推荐)
第三种
npm uninstall node-sass
(卸载之前的node-sass)
npm install --save-dev node-sass
(–save-dev自动将node-sass加入到 项目文件夹下的package.json中)
(这种方法是处理node-sass与node版本冲突的情况,你可以先卸载项目中的package.json中node-sass然后安装符合node版本的node-sass或者直接修改package.json中的node-sass版本使它向上兼容)