[英]NPM install fails with node-gyp
我们在项目上运行“npm install”时遇到问题。 找不到某个文件:
fatal error C1083: Cannot open include file: 'windows.h'
它似乎来自node-gyp模块:
c:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_lo ad_hook.c(13):
致命错误 C1083:无法打开包含文件:'windows.h':没有这样的文件或目录 [D:\ngs-frontend-next\node_modules\browser-sync\node_module s\socket.io\node_modules\engine.io\ node_modules\ws\node_modules\bufferutil\build d\binding.sln]
这个 node-gyp 似乎是我们永无止境的痛苦之源。 起初它抱怨它需要 python,所以我们安装了它。 然后它抱怨它需要我们安装的 VCBuild(使用 .NET 2.0 SDK),现在我们有这个错误。 就好像错误越来越模糊,感觉我们走错了路。
奇怪的是,我们团队中的其他人在运行 npm-install 时遇到了零问题。
完整的错误如下所示:
c:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\src\win_delay_lo ad_hook.c(13):
致命错误 C1083:无法打开包含文件:'windows.h':没有这样的文件或目录 [D:\ngs-frontend-next\node_modules\browser-sync\node_module s\socket.io\node_modules\engine.io\ node_modules\ws\node_modules\bufferutil\build d\binding.sln]
gyp ERR:构建错误 gyp ERR! 堆栈错误:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
失败,退出代码:ChildProcess.onExit 处有 1 个堆栈(C:\Program Files\nodejs\node_modules\npm\node _modules\node- gyp\lib\build.js:270:23) gyp 错误。 堆栈在 emitTwo (events:js:87.13) gyp ERR。 堆栈在 ChildProcess:emit (events:js.172.7) gyp ERR。 堆栈在 Process.ChildProcess:_handle:onexit (internal/child_proces s.js.200:12) gyp ERR。 系统 Windows_NT 6:1.7601 gyp ERR: 命令 "C.\Program Files\nodejs\node.exe" "C.\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" “重建”gyp ERR。 cwd D.\ngs-frontend-next\node_modules\browser-sync\node_modules\socket, io\node_modules\engine.io\node_modules\ws\node_modules\bufferutil gyp ERR。 节点 -v v4.2.2 gyp 错误! node-gyp -v v3.0.3 gyp 错误! 不行 npm WARN optional dep failed, continuing utf-8-validate@1.2.1gifsicle@3.0.3 安装后 D:\ngs-frontend-next\node_modules\gulp-imagemin\node_modules\imagemin\node_modules\imagemin-gifsicle\node_modules\gifsicle node lib/install.js
package.json看起来像这样:
{
"name": "Fast-nunjucks",
"version": "0.0.1",
"description": "A simple boilerplate using nunjucks as a template engine",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/willianjusten/Fast-nunjucks.git"
},
"keywords": [
"nunjucks",
"node",
"gulp",
"stylus"
],
"author": "Willian Justen de Vasconcellos",
"license": "ISC",
"bugs": {
"url": "https://github.com/willianjusten/Fast-nunjucks/issues"
},
"homepage": "https://github.com/willianjusten/Fast-nunjucks",
"devDependencies": {
"autoprefixer-stylus": "^0.7.1",
"browser-sync": "^2.8.2",
"gulp": "^3.9.0",
"gulp-cache": "^0.3.0",
"gulp-concat": "^2.6.0",
"gulp-if": "^1.2.5",
"gulp-imagemin": "^2.3.0",
"gulp-minify-html": "^1.0.4",
"gulp-nunjucks-html": "^1.2.2",
"gulp-order": "^1.1.1",
"gulp-plumber": "^1.0.1",
"gulp-stylus": "^2.0.6",
"gulp-uglify": "^1.2.0",
"gulp-util": "^3.0.6",
"jeet": "^6.1.2",
"kouto-swiss": "^0.11.13",
"minimist": "^1.1.3",
"rupture": "^0.6.1"
},
"dependencies": {
"gulp-install": "^0.6.0"
}
}
错误消息给我造成了困惑,并没有帮助我完全解决错误。
node- gyp项目的 README.md 更好地列出了 Unix、Max OS X 和Windows的安装说明。
在Windows系统中,您可以使用选项 1 或选项 2,但主要是您需要安装Visual C++ Build Tools 。
以下引用来自Windows安装部分:
- 在 Windows 上:
- Visual C++ 构建环境:
- 选项 1:使用默认安装选项安装 Visual C++ 构建工具。
- 选项 2:安装 Visual Studio 2015(或修改现有安装)并在安装过程中选择用于 Visual C++ 的通用工具。 这也适用于免费的 Community 和 Express for Desktop 版本。
[仅限 Windows Vista / 7] 需要 .NET Framework 4.5.1- 安装 Python 2.7(不支持v3.xx ),然后运行
(或参见下文以获取有关指定正确 Python 版本和路径的进一步说明。)npm config set python python2.7
- 启动cmd,
npm config set msvs_version 2015
如果上述步骤对您不起作用,请访问 Microsoft 的 Windows Node.js 指南以获取更多提示。
Python配置的常用说明:
如果您安装了多个 Python 版本,您可以通过设置“--python”变量来识别 node-gyp 使用的 Python 版本:
$ node-gyp --python /path/to/python2.7
如果通过 npm 调用 node-gyp 并且您安装了多个版本的 Python,那么您可以将 npm 的“python”配置键设置为适当的值:
$ npm config set python /path/to/executable/python2.7
按照上述说明成功配置了我的系统。
系统信息
λ ver
Microsoft Windows [Version 6.1.7601]
λ node -v
v6.2.0
λ npm -v
3.9.2
相关工具/文章的链接:
尝试使用--force option
再次安装:
npm install --force
如果这不起作用,请尝试全局更新 npm:
npm update -g npm
并使用--force
选项重试。
我尝试了上述所有解决方案,但都没有奏效。 我的问题是我必须删除根目录中的一些文件:
package-lock.json
和yarn.lock
和yarn-error.log
删除这些文件后,我运行:
npm cache clean --force
然后我运行命令:
npm install
错误消失了
我在 Mac 上遇到了几乎相同的问题。 我收到了很多垃圾邮件错误消息,但最后我意识到了这个问题,它是版本不匹配...
描述:
npm install 安装 gyp (node-gyp) 失败:
npm ERR! gyp ERR! node -v v16.2.0
npm ERR! gyp ERR! node-gyp -v v3.8.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed with error code: 1
解决方案:
将 npm / node 降级到稳定版本!
尝试:
安装“n”: npm i -gn
降级 npm: sudo n stable
重新运行npm install
就可以了!
上次我看到类似的错误是因为我为我的一个依赖项使用了错误版本的npm
和/或node
。 尝试升级这些并重试。
在再次尝试删除您的node_modules
目录之前。
您可能需要调查您的依赖项需要哪些版本的npm
和node
。 您可以尝试所有依赖项、node 和 npm 的最新版本。
检查您的同事使用的版本。
您使用的是什么操作系统? 这可能会产生影响,因为 CLANG 的版本可能不同。
为此解决了它(OS X):
rm -rf ~/.node_gyp and
sudo npm install -g node-gyp@3.4.0
cd /usr/local/lib
sudo ln -s ../../lib/libSystem.B.dylib libgcc_s.10.5.dylib
brew install gcc
npm install
如果您使用的是“node-sass”,请将其升级到版本 5.0.0,确保您已安装构建工具 2017 和 Python 3,并在 npm install 之前发出这些命令
npm config set msvs_version 2017
npm config set python npm config set python C:\Users\username\AppData\Local\Programs\Python\Python39\python.exe
尝试删除当前 node_modules 文件夹并以普通用户、非管理员或 root 用户身份运行命令
安装 VC++ Build Tools Technical Preview [仅限 Windows 7] 需要 .NET Framework 4.5.1
安装 Python 2.7,并将其添加到您的 PATH,npm config set python python2.7
启动 cmd, npm config set msvs_version 2015 --global (这是每次都代替 npm install [package name] --msvs_version=2015。)
4.这么多 npm 安装 :tada:
在此处发布我的解决方案,以防像我这样使用Windows 10的人在安装许多 Microsoft 相关构建工具后仍然遇到错误。
您只需要:
视窗 10 64 位
蟒蛇2.7.x
我之前尝试过 Visual Studio 2015,但它根本不起作用。
首先,我卸载了所有与 Microsoft 相关的构建工具。 (如果您之前没有安装任何东西来尝试解决此问题,请跳过此步骤。)
安装 Visual Studio 2013。
像@Sourav 所说的那样配置 npm:
配置蟒蛇:
npm config set python /path/to/python2.7
配置 msvs_version:
npm config set msvs_version 2013
运行出现此错误的npm install
或 npm 命令。 这个对我有用!
顺便说一句,这个解决方案来自这里。
嘿,请尝试安装windows 构建工具(全局 npm 包)
这将解决您的问题 :-) 之后您应该可以使用您的 npm install 命令。
基于node-gyp README ,更新 npm npm i npm -g
,将引入更新版本的 node-gyp。
提示:如果您在Windows上,请从提升的 PowerShell 或 CMD.exe(以管理员身份运行)执行npm install --global --production windows-build-tools
。
对于 Windows 8 或 10:
假设节点和 npm 已经安装。
我的节点和 npm 版本(在撰写此答案时):
节点:8.9.4
npm:5.6.0
首先安装python 2.x
确保它在路径上可用
安装好后运行
我正在处理一个较旧的项目并遇到此错误(或与 node-gyp 非常相似的错误),因为 package-lock 是针对较旧版本的 node.js 的。 降级到该版本后,我能够运行 npm install 没有问题。
我在我的项目中遇到了类似的问题。 就我而言,删除package-lock.json
文件并让它重新创建会有所帮助。
编辑或删除您的 package-lock.json 并运行 npm install
我正在使用纱线,所以我只是运行yarn global add node-gyp
来全局安装node-gyp
而不使用 npm 并且它工作。 我不再面临错误
对于那些使用 npm 的人,可以使用npm install -g node-gyp
来完成。
确保您知道运行这些命令将在您的环境中全局安装 node-gyp,也可能超出您当前应用程序的范围。 如果您在类似环境中运行依赖于任何特定版本的node-gyp
的任何其他应用程序,您可能会遇到一些麻烦。
在对各种堆栈答案进行大量故障排除后,我在 Windows 机器上遇到了同样的错误,我无法修复它,后来做了以下操作,使它现在可以正常工作。
删除package-lock.json然后重启你的机器(如果有更改生效)然后运行
npm install --legacy-peer-deps
这就是为我解决的问题
sudo npm install -g npm
npm cache clean --force
npm install
安装 python2 并尝试再次运行npm install
。 这种方法对我有用。
对我有用的解决方案正在运行
npm install --global --production windows-build-tools
虽然脚本卡在 python 安装部分,但 npm 安装之后就可以完美运行,而且花了很长时间。 我只知道它可以工作,因为我看到 Visual Studio 的 cpu 使用率下降到 0 一段时间。
我刚跑
> yarn install
它奏效了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.