我正试图在Windows 8上的Node.js项目中执行以下命令:
npm安装web3@1.0.0-beta.24
但我遇到了一个错误,我知道如何处理。
TRACKER:错误TRK0005:未能定位:"CL.exe"。系统无法找到指定的文件。[C:\Projects\myproject\node_modules\scrypt\build\copied_files.vcxproj]
这是整个输出:
scrypt@6.0.3预装C:\Projects\myproject\node_modules\scrypt节点-加密-重新安装.js
scrypt@6.0.3安装C:\Projects\myproject\node_modules\scrypt节点gyp重建
C:\Projects\myproject\node_modules\scrypt>如果未定义npm_config_node_gyp(节点"C:\ProgramFiles\nodejs\node_modules\npm\bin\node-gyp-bin\。。。。\node_modules\node gyp\bin\node-gyp.js"重建)else(node"重建)警告:缺少输入文件:C:\Projects\myproject\node_modules\scrypt\build。。\scrypt\win\include\config.h在此解决方案中一次生成一个项目。启用并行构建,请添加"/m"开关。C: \程序文件(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CpBuild.targets(366,5):警告MSB8003:未能从中找到WindowsSDKDir变量注册中心。TargetFrameworkVersion或PlatformToolset可以设置为无效的版本号。[C:\Projects\myproject\node_modules\scrypt\build\copied_files.vcxproj]正在复制scrypt/win/include/config.h到scrypt/scrypt-1.20/config.h系统找不到指定的文件。TRACKER:错误TRK0005:失败无法定位:"CL.exe"。系统找不到指定的文件。[C:\Projects\myproject\node_modules\scrypt\build\copied_files.vcxproj]
C: \程序文件(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CpBuild.targets(366,5):警告MSB8003:未能从中找到WindowsSDKDir变量注册中心。TargetFrameworkVersion或PlatformToolset可以设置为无效的版本号。[C:\Projects\myproject\node_modules\scrypt\build\scrypt_wrapper.vcxproj]TRACKER:错误TRK0005:找不到:"CL.exe"。系统找不到指定的文件。[C:\Projects\myproject\node_modules\scrypt\build\scrypt_wrapper.vcxproj]
gyp ERR!生成错误gyp ERR!堆栈错误:
C:Program Files (x86)MSBuild14.0binmsbuild.exe
失败,退出代码为:1 gyp ERR!在ChildProcess.onExit(C:\ProgramFiles\nodejs\node_modules\npm\node_modeles\node-gyp\lib\build.js:258:23)gyp ERR!堆栈在emitTwo(events.js:126:13)gyp ERR!堆叠在ChildProcess.emit(events.js:214:7)gyp ERR!堆叠在Process.ChildProcess.handle.onext(internal/child_Process.js:198:12)gyp ERR!系统Windows_NT 6.2.9200 gyp ERR!命令"C:\ProgramFiles\nodejs\node.exe"C:\ProgramFiles\nodejs\node_modules\npm\node_modeles\node-gyp\bin\node-gyp.js"重建"gyp ERR!cwd C:\Projects\myproject\node_modules\scrypt-gyp ERR!node-v v8.9.1 gyp ERR!节点gyp-v v3.6.2 gyp ERR!不正常npm警告inbanner@1.6.0没有存储库字段。npm ERR!代码ELIFECYCLE npm ERR!errno 1 npm ERR!scrypt@6.0.3安装:
node-gyp rebuild
npm ERR!退出状态1 npm ERR!npm ERR!在处失败scrypt@6.0.3安装脚本。npm ERR!这可能是npm没有问题。可能有额外的日志输出在上面npm ERR!此运行的完整日志可在以下位置找到:npm ERR
C:\Users\user\AppData\Roaming\npm-cache_logs\2017-11-13T01_31_12_133Z-debug.log
帮助!
这个包似乎需要本机编译。您需要为此安装Visual Studio C++生成工具。您可以从以下链接下载相同的
http://landinghub.visualstudio.com/visual-cpp-build-tools
此外,在此之后,您需要确保CL.exe
在您的路径中可用。它将在类似C:Program FilesMicrosoft Visual Studio 10.0VCcebin
的路径上。这将根据您安装的生成工具的版本进行更改。
如果安装程序不为您更新Windows PATH环境变量,则需要确保更新该变量。
此外,如果npm仍然失败,您可以随时尝试使用yarn
yarn add web3@1.0.0-beta.24
ERR!在处失败scrypt@6.0.3安装脚本。
错误是由scrypt
包引起的,因为node-gyp
无法重建,
尝试以管理员身份运行cmd并运行npm install scrypt@6.0.3
,如果不起作用,请尝试node-gyp rebuild
或重新安装
如果您修复了节点gyp的问题,那么在安装node-gyp
的过程中,Cl.exe
应该位于正确的位置
我在同一条船上,网上找到的大多数答案对这个重建错误都没有帮助(或者不是100%可行)。在尝试了几种不同的方法后,我发现这种方法在我的机器(Windows 10 Pro)上有效。现在,我可以毫无问题地安装web3了。(或其他与节点gyp问题相关的包,如"松露开箱反应")
我总结的步骤如下:
- 安装NodeJS、Git
- 下载Windows Visual Studio 2015
-
打开Visual Studio 2015并创建"新项目…">
- 选择"创建新的C++项目">
- 您应该看到VS请求安装"Visual C++2015通用工具"one_answers"Windows 8.1 SDK和通用CRT SDK"的菜单(从该Windows 8.1 SDK文件中加密所需工具中的一些进程)
- 同时选择并安装
-
通过npm命令安装/链接python
npm --add-python-to-path="true" --debug install --global windows-build-tools
- 将msvs_version设置为2015
npm config set msvs_version 2015 --global
- 安装web3
npm install web3
参考:我的npm版本:5.6.0我的节点版本:8.9.4
希望这会有所帮助!