node-gyp rebuild 卡住?

最近 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

时间: 2024-11-06 00:55:58

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

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. $ [sudo] npm explore npm -g -- npm install [email protected] From: http://lovewindy.com/node-updating-npms-bundled-node-gyp/ Node: Updating npm's bund

解决 node-gyp rebuild 卡住 的问题

node-gyp在编译前会首先尝试下载node的headers文件,像这样: gyp http GET https://nodejs.org/download/release/v6.8.1/node-v6.8.1-headers.tar.gz 然后就会卡住,急死人啊 解决方法是:加一个nodedir参数,告诉node-gyp,不需要去网上下载node头文件了,像这样: node-gyp rebuild --nodedir ~/work/node-v6.8.1 问题解决.

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

Node.js 在 Windows 下只能通过 Microsoft Visual Studio 编译,因此你需要首先安装 Visual Studio 或者免费的 Visual Studio Express .你还需要安装 Python 2 ( 2.5 以上的版本,但要小于 3.0 ) ,可以在 http://python.org/ 取得.安装完 Python 以后请确保在 PATH 环境变量中添加 python.exe 所在的目录,如果没有则需要手动在“系统属性”中添加. 一切准备好以后,打开命

CentOS上安装Node.js

CentOS上安装Node.js(想在Linux上学习Node.js的可以来看看). 说明: 使用CentOS系统,进行nodejs安装,nodejs版本-v0.8.7. 1,先下载nodejs: # wget http://nodejs.org/dist/v0.8.7/node-v0.8.7.tar.gz 2,解压文件 # tar xvf node-v0.8.7.tar.gz 3,进入解压目录 # cd node-v0.8.7 4,检查所需要配置 # ./configure 出现错误提示: E

Node.js 模块机制及常见面试问题解答

Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript 开发大型应用没有标准的缺陷,类似于 Java 中的类文件,Python 中的 import 机制,Node.js 中可以通过 module.exports.require 来导出和引入一个模块. 在模块加载机制中,Node.js 采用了延迟加载的策略,只有在用到的情况下,系统模块才会被加载,加载完成后会放到 binding_cache 中. 面试指南 require的加载机制?,参考:模块加载机制 modu

github air项目中遇到的几个问题及解决(nodejs居多)

https://github.com/cambecc/air 1.按照github中给出的步骤,执行到npm install,项目中的package.json包含了要安装的包的版本,但是安装的时候,pg和iconv模块提示gyp rebuild错误,一开始怀疑版本的问题(卸载nodejshttp://www.cnblogs.com/snandy/p/4418615.html,然后下载你所需的版本),但是把版本调整到package.json提示的版本还是不行,于是重新clone一份,把packag

Windows环境下npm install常见错误

Windows环境下npm install安装包依赖时,常出现一些错误,下面为个人解决办法: 错误一 缺少python环境: G:\nodejs\moviesite\node_modules\bcrypt>if not defined npm_config_node_gyp (node "D:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modulesnode-gyp\bin\node-gyp.js&

[数据结构]替罪羊树简介

替罪羊树是不通过旋转而是重构的一种平衡树.当某一棵子树的节点总数超过其父节点的一定时,就进行重构操作. 目录 节点定义 重构操作 插入操作 删除操作 其他各种操作 完整代码&总结 [节点定义] 为了判断是否需要重构,所以需要加入cover(实际节点个数)域.这次直接加入可重操作,所以还需要增加一个size域.为了体现C++面向对象的思想(分明就是Java用多了),所以判断一个子树是否需用重构写成成员函数bad().(真开心,因为是重构,不需要那么多的father,终于可以轻松地删掉父节点指针)

[Cousera Angular JS学习笔记]第一周

最近在给搜索引擎做前台,开始学习Angular JS,直接上coursera上的课程:https://www.coursera.org/learn/angular-js/home/week/1(没有JS基础的同学可以和我一样先过下cousera的JS课程 Interacticity with JavaScript) 要先安装bower(方便获取JS),安装bower之前要先安装node JS (1) 安装nodejs过程直接参考http://czpae86.iteye.com/blog/1636