node-gyp rebuild 卡住?

本文分享了解决Node.js安装过程中在node-gyp rebuild阶段卡顿问题的方法,通过检查Python、编译工具链是否已安装,以及解决Node.js源码缺失导致的下载速度慢问题。具体步骤包括使用天朝加速下载工具下载Node.js源码,并将其提取给node-gyp使用。同时,提供了一个详细的解决流程和一些额外的调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/mliudong/p/4528539.html

妈的,之前明明成功了呀! PS D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts> cnpm install √ Linked 260 latest versions fallback to D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts\node_modules\.store\node_modules √ Linked 15 public hoist packages to D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts\node_modules deprecate vue@^2.6.14 Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. deprecate eslint@^6.2.2 This version is no longer supported. Please see https://eslint.org/version-support for other options. deprecate @types/echarts@4.9.22 › @types/zrender@* This is a stub types definition. zrender provides its own type definitions, so you do not need this installed. deprecate eslint@6.8.0 › file-entry-cache@5.0.1 › flat-cache@2.0.1 › rimraf@2.6.3 Rimraf versions prior to v4 are no longer supported deprecate element-ui@2.15.14 › async-validator@1.8.5 › babel-runtime@6.26.0 › core-js@^2.4.0 core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. Recently updated (since 2025-07-22): 1 packages (detail see file D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts\node_modules\.recently_updates.txt) √ Run 1 script(s) in 93ms. √ Installed 52 packages on D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts √ All packages installed (174 packages installed from npm registry, used 7s(network 7s), speed 786.61KB/s, json 130(986.45KB), tarball 4.23MB, manifests cache hit 131, etag hit 131 / miss 3) 我明明什么都没做,为什么就又不行了! PS D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts> cnpm install / [18/53] Installing workbox-sw@^3.6.3 WARN node unsupported "node@v16.20.2" is incompatible with @vue/cli-plugin-eslint@3.12.1 › globby@9.2.0 › @types/glob@7.2.0 › @types/minimatch@6.0.0 › minimatch@*, expected node@20 || >=22 \ [20/53] Installing jsesc@~3.0.2[npminstall:download:npm] Ignore invalid cache file C:\Users\liuchaokun\.npminstall_tarball\manifests\b\a\4\ba4fb9d2cfccee2af987f2b069ef7fda.json - [20/53] Installing safer-buffer@~2.1.0 WARN node unsupported "node@v16.20.2" is incompatible with @vue/cli-plugin-eslint@3.12.1 › globby@9.2.0 › @types/glob@7.2.0 › @types/minimatch@6.0.0 › minimatch@10.0.3 › @isaacs/brace-expansion@^5.0.0, expected node@20 || >=22 \ [21/53] Installing minimalistic-assert@^1.0.0 WARN node unsupported "node@v16.20.2" is incompatible with @vue/cli-plugin-eslint@3.12.1 › globby@9.2.0 › @types/glob@7.2.0 › @types/minimatch@6.0.0 › minimatch@10.0.3 › @isaacs/brace-expansion@5.0.0 › @isaacs/balanced-match@^4.0.1, expected node@20 || >=22 √ Installed 53 packages √ Linked 1390 latest versions [1/7] scripts.install fibers@^4.0.2 run "node build.js || nodejs build.js", root: "D:\\前端\\苍穹外卖\\前端源码\\苍穹外卖前端源码\\project-sky-admin-vue-ts\\node_modules\\_fibers@4.0.3@fibers" D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts\node_modules\_fibers@4.0.3@fibers>node "D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\npminstall\node-gyp-bin\\node-gyp.js" rebuild --release gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. gyp ERR! stack at PythonFinder.failNoPython (D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\node-gyp\lib\configure.js:484:19) gyp ERR! stack at PythonFinder.<anonymous> (D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\node-gyp\lib\configure.js:509:16) gyp ERR! stack at callback (D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\graceful-fs\polyfills.js:306:20) gyp ERR! stack at FSReqCallback.oncomplete (node:fs:202:21) gyp ERR! System Windows_NT 10.0.22000 gyp ERR! command "D:\\My Software\\nodejs\\node.exe" "D:\\My Software\\nvm\\nvm\\v16.20.2\\node_modules\\cnpm\\node_modules\\npminstall\\node-gyp-bin\\node-gyp.js" "rebuild" "--release" gyp ERR! cwd D:\前端\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts\node_modules\_fibers@4.0.3@fibers gyp ERR! node -v v16.20.2 gyp ERR! node-gyp -v v4.0.0 gyp ERR! not ok node-gyp exited with code: 1 Please make sure you are using a supported platform and node version. If you would like to compile fibers on this machine please make sure you have setup your build environment-- Windows + OS X instructions here: https://github.com/nodejs/node-gyp Ubuntu users please run: `sudo apt-get install g++ build-essential` RHEL users please run: `yum install gcc-c++` and `yum groupinstall 'Development Tools'` Alpine users please run: `sudo apk add python make g++` 'nodejs' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 [npminstall:runscript:error] fibers@^4.0.2 scripts.install run "node build.js || nodejs build.js" error: Error [RunScriptError]: Run "C:\Windows\system32\cmd.exe /d /s /c node build.js || nodejs build.js" error, exit code 1 at ChildProcess.<anonymous> (D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\runscript\index.js:114:21) at ChildProcess.emit (node:events:513:28) at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12) { stdio: [Object], exitcode: 1 } × Install fail! RunScriptError: post install error, please remove node_modules before retry! Run "C:\Windows\system32\cmd.exe /d /s /c node build.js || nodejs build.js" error, exit code 1 RunScriptError: Run "C:\Windows\system32\cmd.exe /d /s /c node build.js || nodejs build.js" error, exit code 1 at ChildProcess.<anonymous> (D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\runscript\index.js:114:21) at ChildProcess.emit (node:events:513:28) at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12) npminstall version: 5.8.1 npminstall args: D:\My Software\nodejs\node.exe D:\My Software\nvm\nvm\v16.20.2\node_modules\cnpm\node_modules\npminstall\bin\install.js --fix-bug-versions --china --userconfig=C:\Users\liuchaokun\.cnpmrc --disturl=https://npmmirror.com/mirrors/node --registry=https://registry.npmmirror.com
最新发布
07-31
npm ERR! code 1 npm ERR! path D:\flowspace\cldoa-web\node_modules\node-sass npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js npm ERR! Building: D:\tools\nodeJs\node.exe D:\flowspace\cldoa-web\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library= npm ERR! �ڴ˽��������һ������һ����Ŀ����Ҫ���ò������ɣ������ӡ�/m�����ء� npm ERR! ��������ʱ��Ϊ 2025/6/11 19:35:51�� npm ERR! �ڵ� 1 �ϵ���Ŀ��D:\flowspace\cldoa-web\node_modules\node-sass\build\binding.sln��(Ĭ��Ŀ��)�� npm ERR! ValidateSolutionConfiguration: npm ERR! �������ɽ���������á�Release|x64���� npm ERR! MSBUILD : error MSB3428: δ�ܼ��� Visual C++ �����VCBuild.exe����Ҫ��������⣬1) ��װ .NET Framework 2.0 SDK��2) ��װ Microsoft Visual Studio 2005���� 3) ������������װ��������λ�ã��뽫��λ�����ӵ�ϵͳ·���С� [D:\flowspace\cldoa-web\node_modules\node-sass\build\binding.sln] npm ERR! �����������Ŀ��D:\flowspace\cldoa-web\node_modules\node-sass\build\binding.sln��(Ĭ��Ŀ��)�IJ ��� - ʧ�ܡ� npm ERR! npm ERR! ����ʧ�ܡ� npm ERR! npm ERR! ��D:\flowspace\cldoa-web\node_modules\node-sass\build\binding.sln��(Ĭ��Ŀ��) (1) -> npm ERR! (_src_\libsass Ŀ��) -> npm ERR! MSBUILD : error MSB3428: δ�ܼ��� Visual C++ �����VCBuild.exe����Ҫ��������⣬1) ��װ .NET Framework 2.0 SDK��2) ��װ Microsoft Visual Studio 2005���� 3) ������������װ��������λ�ã��뽫��λ�����ӵ�ϵͳ·���С� [D:\flowspace\cldoa-web\node_modules\node-sass\build\binding.sln] npm ERR! npm ERR! 0 ������ npm ERR! 1 ������ npm ERR! npm ERR! ����ʱ�� 00:00:02.59 npm ERR! gyp info it worked if it ends with ok npm ERR! gyp verb cli [ npm ERR! gyp verb cli 'D:\\tools\\nodeJs\\node.exe', npm ERR! gyp verb cli 'D:\\flowspace\\cldoa-web\\node_modules\\node-gyp\\bin\\node-gyp.js', npm ERR! gyp verb cli 'rebuild', npm ERR! gyp verb cli '--verbose', npm ERR! gyp verb cli '--libsass_ext=', npm ERR! gyp verb cli '--libsass_cflags=', npm ERR! gyp verb cli '--libsass_ldflags=', npm ERR! gy
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值