提起 node-sass, 很多人一把泪,. 之前用 npm, 我用 cnpm, 或者终端代理安装.
这回环境换成 win+yarn,
cmd 开代理我是不会 用了传说中的 node_sass/install.js 的变量, 指向 cnpm 包的地址, url 没问题, 死活提示 404.
于是还是开全局代理.
build 时提示 python 找不到, 就在环境变量中, 你找不到 , 手工指定
yarn config python2 c:\python2\python2.exe
yarn install --force
不够折腾的... 我想用 linux.
1
371657110 2017-05-16 17:58:31 +08:00 1
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
一直用这个.没毛病 |
2
sensui7 OP @371657110
我没实验这个, 我用的 set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ & node node_modules/node-sass..../install.js 一直提示找不到 |
4
sensui7 OP @371657110 是的, 但我之前是给 node-sass 的 build 文件 install.js 指定的变量, 单独这样就不用下载包了.
顺便补充一下, yarn config python2 c:\python2\python2.exe 加上-g |
5
cyio 2017-05-16 18:45:48 +08:00
在 node-sass 安装上花的时间,想想就后悔,深坑,替代品太多了,能离多远离多远,自己绝不主动用
|
6
SourceMan 2017-05-16 18:47:11 +08:00
你用的 Windows 吧?
|
7
smallpath 2017-05-16 18:53:43 +08:00
有机会安 node-gyp 的话, 你可以再经历一次更反人类的体验
|
8
janecc 2017-05-16 19:23:27 +08:00
直接 npm 走代理,没有压力
|
9
sammo 2017-05-16 19:24:32 +08:00 via iPhone
指定老版本即可
|
10
arfaWong 2017-05-16 19:26:40 +08:00
cnpm 用起来想想就怕 😑😑😑
|
11
fhefh 2017-05-16 19:42:02 +08:00
昨天遇到过 我用 yarn 安装的就好了
|
12
hxsf 2017-05-16 19:54:35 +08:00 1
1. 这不是 node 的问题
2. 这只能怪墙 3. node-sass 有 pre-build 好的,会从 github 拉,还是墙的问题 4. 淘宝有 node-sass 的 pre-build 镜像 5. node-sass 的源代码 中写到 function getBinaryUrl() { var site = getArgument('--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, getBinaryName()].join('/'); } 很容易就可以排除你为什么 404 的问题。比如 site 的末尾有 /的情况下,拼接出来的路径是不是会有两个 /,如果是,那两个 /会不会导致问题出现? node-gyp 在 windows 上需要 vs 这个比较麻烦,确实可以黑一把,什么时候支持 gcc 就好了。 总结: 墙的问题。 |
13
371657110 2017-05-18 09:39:29 +08:00
如果没有历史原因.用 postcss 的 nextcss 挺好的.
|
14
sensui7 OP @hxsf 你分析的很好, 但是都是我们知道的东西, 而且并不都是墙的问题, 最重要的是有解决办法吗?
我主贴中贴的方法并不彻底, python2 的问题用 yarn config 解决不了, 还有 SASS_BINARY_SITE 的问题, 我已经找到了一劳永逸而且很简单的方法, 以后按 node-sass 和普通包一样了. 不过感觉 v2 大神太多, 以后还是发在自己博客吧. |
15
hxsf 2017-05-18 16:40:10 +08:00
@sensui7 #14
好,那请问, 1. 你 2 楼中提到的 `node node_modules/node-sass..../install.js` 中,node_modules 中 node-sass 文件夹哪里来的,你使用别的工具下载完了放进去的?如果是,你有记得安装它的依赖么?我猜你说的 `一直提示找不到` 是找不到 node-sass/...install.js 所需要的依赖吧。 2. 你 4 楼中提到的 `yarn config set python2 c:\python2\python2.exe` 又是什么操作? node-gyp 文档中明确提到了: 如果你电脑中 python2 不在 path 中,请使用 `npm config set python /path/to/python2.7` config 的键是 python 不是 python2 3. node-sass 因为是个需要 gyp 的模块,作者已经提供了 pre-build, 如果网络质量好的情况下,可以直接下载到编译好的,而无需进行本地的从源码构建 4. 承认 node-gyp 在 window 环境下很难配置。 5. 另外,cmd 不走 代理,不过 yarn/npm 可以配置代理: yarn config http-proxy=http://127.0.0.1:port yarn config https-proxy=http://127.0.0.1:port 一句是 http 代理,一句是 https 代理。 |
16
sensui7 OP @hxsf
我严重怀疑你到底用 npm 或者 yarn 安装过 node-sass 吗? 你要是安装过就知道 install.js 是从包仓库下载的. 只是 build 时需要翻墙, 你安装包翻什么墙? 这里没人提 node-gyp 的问题. cmd 不走代理, 好新鲜.连调侃都看不出来. |
17
hxsf 2017-05-18 17:50:34 +08:00
没人提 node-gyp 的问题?
`yarn config python2 c:\python2\python2.exe` 敢问你这句设置的是什么? 另外 http://photo.weibo.com/2164689294/wbphotos/large/mid/4108813374744262/pid/8106898egy1ffpnsyr95dg20na0gx4qp |
19
sensui7 OP @hxsf
你这测的是什么?? 你 npm 安装时用的缓存 binary, 没有下载过程 yarn 安装时你又没缓存, 当然下载不了. 它出错信息是 python2 not found , 我以为变量是 python2 |
20
hxsf 2017-05-18 19:15:46 +08:00
你 npm 安装时用的缓存的包(这个有毛病么?网络没问题,重新下载和缓存的有区别么),没有缓存的 binary,很明显的看到从 淘宝镜像下载的。
然后我把 SASS_BINARY_SITE 的环境变量删了。 使用 yarn 安装,很明显的看到 yarn 是从 github 下载的 binary。而且安装成功了。并没有失败。 另外,node 只在使用 node-gyp 编译需要 gyp 的包的情况下,windows 系统下,才会要求 python2,make,vs。 你一直“我以为”,“都知道” 你不说清楚你知道什么,你做了什么。就来质疑 “你能解决问题么” 我也不知道你知道什么,不知道什么,我能怎么办,我也很绝望啊,我只能把你可能不知道的都说一遍。 |
21
sensui7 OP @hxsf
这是你的截图 很明显, 你的 binary 是从本地缓存读取的, 你那个 yarn 下载确实是从 github 下载的, 但只能说明翻墙有效, 这里讨论的是绕过墙. 翻墙还有什么好说的. 至于 node-gyp, 我并没有单独配置过 node-gyp, 不过我电脑上有 c++ build toos 和 python2, 我以前安装 rust 环境安装了. 现在能 build 成功. 我的问题已经都解决了. 我不知道你在测什么, 你要是测 SASS_BINARY_SITE , 别翻墙, 清缓存, 你现在 npm 用的缓存, yarn 是翻墙下的, 你要是测 build, 你这也没 build 过程. 从你之前问 install.js 哪来的, 说明你根本不了解这个包安装过程. 唉, 有句话叫, 人之患, 在好为人师. 我不知道的东西多了, 你要能解答我还真感谢你. 浪费了半天精力说了一大堆, 全不在正题上. 谦虚点没什么坏处, 树叶有篆工. 今天心情不好, 不然也不会跟你挣无意义的口舌之辩. |
22
hxsf 2017-05-18 22:09:18 +08:00
@sensui7 #21
npm 的缓存是我录了两遍的问题。缓存也是从 SASS_BINARY_SITE 缓存的啊,衣你所愿, https://ooo.0o0.ooo/2017/05/18/591da4d205ea2.gif 这是清缓存后的。 我从未要测 build 的过程,而是一直在试图讲清楚 直接使用 prebuild 包,而无需安装 node-gyp 你说 `从你之前问 install.js 哪来的, 说明你根本不了解这个包安装过程.` 这是因为,你说 ·你直接 node node_modules/node-sass/..../install.js 报找不到`,但是你又没说你这个 node_modules/node-sass 文件夹怎么来的。 如果是通过 npm 安装的,当 npm 安装失败的时候,他会删掉这个文件夹。所以我会猜测是不是你下载了源码放到了这个目录(可能导致 node-sass 的依赖没有被安装)。 当你 安装 node-sass 的时候 1. npm 通过 registry (通常是 https://registry.npmjs.org/)去下载这个包及其依赖(递归下载所有依赖), 2. 如果 1 中没有发生 404,根据 npm 定义的 `install, postinstall: Run AFTER the package is installed.`,所以 node-sass 安装好了后会执行 定义好的 scripts/install.js,这个文件里编写了 去 github 或者 镜像站下载 预先编译好的 二进制文件 3. 依然是根据 npm 规定的, `install`完了之后会执行 `postinstall`,这个指向 scripts/build.js 这个文件的作用是 测试之前下的二进制文件可用的,如果不可用或者压根没下载下来,就调用 node-gyp 去走源码构建。 我说的有哪里不对的还请指出? 你一开始的不成功是不是因为上面过程的问题?也请说明。 |