最近 npm install 时候经常遇到在 node-gyp rebuild 那里卡很久的情况(大于十分钟),于是研究了一下输出的错误日志解决了这个问题,在这里分享一下。

首先,请检查 node-gyp 需要的 Python 和编译工具链是否已安装:

On Unix:

  • python (v2.7 recommended, v3.x.x is not supported)
  • make
  • A proper C/C++ compiler toolchain, like GCC

如果检查下来这几项都没问题的话,可能是 NodeJs 源码缺失的原因。

这其实又是一个天朝独有的问题,主要原因是 node-gyp 编译时候需要 NodeJs 源码来提供头文件,所以它会先尝试下载 NodeJs 源码,而在天朝墙外 CDN 经常抽风,有时候下载 NodeJs 源码奇慢无比,如我这里有时候就只有 3KB/s,那么自然要卡很久。

所以解决方法就是,先使用天朝加速下载工具(比如迅雷等)把 NodeJs 的源码 下载到本地,然后提取给 node-gyp:

# wget http://nodejs.org/dist/v0.10.33/node-v0.10.33.tar.gz
# 假设源码已经下载好了.
tar zxf node-v0.10.33.tar.gz -C ~/.node-gyp
mv ~/.node-gyp/node-v0.10.33 ~/.node-gyp/0.10.33
printf "9\n">~/.node-gyp/0.10.33/installVersion

注意,不同操作系统下和编译不同的 package 时候 node-gyp 需要的源码版本有可能是不一样的,installVersion 也有可能不一样。推荐先检查一下 node-gyp 的输出日志来确定下载哪一个文件。

另外还可以使用 npm install --loglevel verbose 查看安装时候的详细日志,来确定需要下载的 Nodejs 源码地址。

bolg 源地址:http://webcache.googleusercontent.com/search?q=cache:MnWpLpHn0kAJ:https://breeswish.org/blog/2014/11/14/node-gyp-rebuild-freeze/+&cd=1&hl=zh-CN&ct=clnk&gl=us

node-gyp rebuild 卡住?的更多相关文章

  1. 解决 node-gyp rebuild 卡住 的问题

    node-gyp在编译前会首先尝试下载node的headers文件,像这样: gyp http GET https://nodejs.org/download/release/v6.8.1/node- ...

  2. node gyp的问题

    解决 binding.gyp not found (xxx/xxx/xxx) while trying to load binding.gyp 问题 在使用ccap图形验证码模块时遇到这个问题 Err ...

  3. Node: Updating npm's bundled node gyp

    Linux, Mac OS X, Solaris, etc. Unix is easy. Just run the following command. Use sudo if necessary. ...

  4. node gyp编译所需要的环境

    安装ms的build工具包,自带python npm install --global --production windows-build-tools

  5. Centos6.4编译安装Node.js(已验证)

    1.准备源文件包 [felix@MyTerminal Downloads]$ mv node-6.5.0 node [felix@MyTerminal Downloads]$ ls node node ...

  6. CentOS上安装Node.js

    CentOS上安装Node.js [日期:2014-07-21] 来源:Linux社区  作者:maskdfe [字体:大 中 小]     CentOS上安装Node.js(想在Linux上学习No ...

  7. node c/c++扩展模块build失败.

    "深入浅出nodejs 朴灵" 例子 c/c++扩展模块 http://diveintonode.org/ 在作者的帮助下,build成功. 下面贴出的hello.cc和bindi ...

  8. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

    博主之前写过一篇文章<html5与EmguCV前后端实现——人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...

  9. 在 Windows系统中编译node.js 源代码

    Node.js 在 Windows 下只能通过 Microsoft Visual Studio 编译,因此你需要首先安装 Visual Studio 或者免费的 Visual Studio Expre ...

随机推荐

  1. 关于C# byte[]与struct的转换

    转自:http://blog.chinaunix.net/uid-215617-id-2213082.html Some of the C# code I've been writing recent ...

  2. Task中的异常处理

    最简单的方式 var t = new Task(() => { throw new Exception("unknow excption"); }); t.Start(); ...

  3. 深入分析Java Web技术(2) IO

    IO是当今Web面临的主要问题之一,可以说,大部分web应用的瓶颈都是IO的瓶颈. Java的IO类是java.io.它包含有80多个类,分为4大部分: 基于字节操作: InputStream,Out ...

  4. Python中使用自定义类class作为海量数据结构时内存占用巨大的问题

    最近碰到处理一个二十多兆的文件时内存蹭蹭的吃掉四百多兆,吓死宝宝了. 无奈毕竟接触python时间有限,还没有完整的看过python的一些基础知识,我想一个合格的pythoner应该不会碰到这个问题. ...

  5. BitNami 里有好多开源软件

    https://bitnami.com/stacks BitNami 提供wordpress.joomla.drupal.bbpress等开源程序的傻瓜式安装包下载,所有的安装包内置了服务器环境,就是 ...

  6. 【C#】取得并改变图像解析度

    , , bmpOrg.Width, bmpOrg.Height);       g.Dispose();       // 画像を保存       string dirName = Path.GetD ...

  7. eclipse新建一个Android项目,就会报错android.support.v7.app.ActionBarActivity

    解决方法: 今天被这个问题折腾了一下,最后终于找到了解决办法. 产生这个问题,是因为你升级了ADT到version 22,但是还需要升级SDK Tools,Platform Tools,Build T ...

  8. Hadoop 2.4.1 设置问题小结【原创】

    先丢点问题小结到这里,免得忘记,有空再弄个详细教程玩,网上的教程要不就是旧版的,要不就是没说到点子上,随便搞搞也能碰上结果是对的时候,但是知其然而不知其所以然,没意思啊.解决问题的方法有很多种,总得找 ...

  9. [转]c++流缓冲---rdbuf()

    C++标准库封装了一个缓冲区类streambuf,以供输入输出流对象使用.每个标准C++输出输出流对象都包含一个指向streambuf的指针,用 户可以通过调用rdbuf()成员函数获得该指针,从而直 ...

  10. LocalBroadcastManager 使用小解

    最近在开发平板项目,完全是fragmentactivity+fragment的结构.看起来似乎简单,但是和以前不同的是,业务逻辑非常复杂,多处的非常规跳转,fragment之间的数据交换,一处更新多处 ...