前端坑: node-sass

2017-05-16 17:53:44 +08:00
 sensui7

提起 node-sass, 很多人一把泪,. 之前用 npm, 我用 cnpm, 或者终端代理安装.

这回环境换成 win+yarn,

  1. cmd 开代理我是不会 用了传说中的 node_sass/install.js 的变量, 指向 cnpm 包的地址, url 没问题, 死活提示 404.

  2. 于是还是开全局代理.

  3. build 时提示 python 找不到, 就在环境变量中, 你找不到 , 手工指定

yarn config python2 c:\python2\python2.exe
  1. 最后, yarn 没有 rebulid, 有一个
yarn install --force

不够折腾的... 我想用 linux.

16943 次点击
所在节点    分享发现
22 条回复
371657110
2017-05-16 17:58:31 +08:00
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
一直用这个.没毛病
sensui7
2017-05-16 18:06:42 +08:00
@371657110
我没实验这个, 我用的
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ & node node_modules/node-sass..../install.js

一直提示找不到
371657110
2017-05-16 18:09:09 +08:00
@sensui7 我是整一句打到 terminal 里面的..可以替换成 yarn..
sensui7
2017-05-16 18:19:52 +08:00
@371657110 是的, 但我之前是给 node-sass 的 build 文件 install.js 指定的变量, 单独这样就不用下载包了.

顺便补充一下, yarn config python2 c:\python2\python2.exe 加上-g
cyio
2017-05-16 18:45:48 +08:00
在 node-sass 安装上花的时间,想想就后悔,深坑,替代品太多了,能离多远离多远,自己绝不主动用
SourceMan
2017-05-16 18:47:11 +08:00
你用的 Windows 吧?
smallpath
2017-05-16 18:53:43 +08:00
有机会安 node-gyp 的话, 你可以再经历一次更反人类的体验
janecc
2017-05-16 19:23:27 +08:00
直接 npm 走代理,没有压力
sammo
2017-05-16 19:24:32 +08:00
指定老版本即可
arfaWong
2017-05-16 19:26:40 +08:00
cnpm 用起来想想就怕 😑😑😑
fhefh
2017-05-16 19:42:02 +08:00
昨天遇到过 我用 yarn 安装的就好了
hxsf
2017-05-16 19:54:35 +08:00
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 就好了。



总结: 墙的问题。
371657110
2017-05-18 09:39:29 +08:00
如果没有历史原因.用 postcss 的 nextcss 挺好的.
sensui7
2017-05-18 16:20:27 +08:00
@hxsf 你分析的很好, 但是都是我们知道的东西, 而且并不都是墙的问题, 最重要的是有解决办法吗?

我主贴中贴的方法并不彻底, python2 的问题用 yarn config 解决不了, 还有 SASS_BINARY_SITE 的问题, 我已经找到了一劳永逸而且很简单的方法, 以后按 node-sass 和普通包一样了.

不过感觉 v2 大神太多, 以后还是发在自己博客吧.
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 代理。
sensui7
2017-05-18 17:26:21 +08:00
@hxsf

我严重怀疑你到底用 npm 或者 yarn 安装过 node-sass 吗? 你要是安装过就知道 install.js 是从包仓库下载的. 只是 build 时需要翻墙, 你安装包翻什么墙?
这里没人提 node-gyp 的问题.

cmd 不走代理, 好新鲜.连调侃都看不出来.
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
hxsf
2017-05-18 17:51:50 +08:00
@hxsf #17 补图

https://ooo.0o0.ooo/2017/05/18/591d6e9d128bc.gif
sensui7
2017-05-18 18:57:53 +08:00
@hxsf
你这测的是什么?? 你 npm 安装时用的缓存 binary, 没有下载过程 yarn 安装时你又没缓存, 当然下载不了.

它出错信息是 python2 not found , 我以为变量是 python2
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。

你一直“我以为”,“都知道”

你不说清楚你知道什么,你做了什么。就来质疑 “你能解决问题么”

我也不知道你知道什么,不知道什么,我能怎么办,我也很绝望啊,我只能把你可能不知道的都说一遍。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/361746

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX